“A generic error occurred in GDI+”错误将图像保存到文件
“A generic error occurred in GDI+” error where save image to file
我在android中将位图的array byte转为encodedString并发送,在这几步没有问题
android 请求码:
public static void uploadImageRequest(Bitmap bitmap, final Context context, final RequestListener requestListener) {
Map<String, String> postParam = new HashMap<>();
//convert Bitmat(image) to string.
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);
byte [] imageBytes = outputStream.toByteArray();
final String imageString = Base64.encodeToString(imageBytes,Base64.DEFAULT);
postParam.put("mac_address", AppUtil.getMacAddress(context));
postParam.put("token", WorkData.getData("token", context));
postParam.put("user_image" , imageString);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
Links.UPDATE_IMAGE_PROFILE_LINK, new JSONObject(postParam),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject json) {
try {
Message.messageText = json.getString("Message");
Message.messageType = json.getString("MessageType");
UserModel.isBlock = json.getBoolean("IsBlock");
UserModel.userProfileImageName = json.getString("ImageName");
requestListener.onResponse();
} catch (Exception e) {
e.printStackTrace();
requestListener.onError(e.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
requestListener.onError(error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
final RequestQueue requestQueue = Volley.newRequestQueue(context);
requestQueue.add(jsonObjReq);
requestListener.onRequest();
requestQueue.addRequestFinishedListener(new RequestQueue.RequestFinishedListener<Object>() {
@Override
public void onRequestFinished(Request<Object> request) {
requestQueue.stop();
}
});
}
在服务器中(asp.net)我成功地将 base64string 转换为数组字节。
我的转换码
var imageBytes = Convert.FromBase64String(tblUserprofile.user_image);
并作为参数传递给下面的方法。
public static bool CreateImage(byte[] imageBytes)
{
try
{
using (MemoryStream ms = new MemoryStream(imageBytes))
{
using (var image = Image.FromStream(ms))
{
image.Save("~/Content/UserProfiles/picture.jpg", ImageFormat.Jpeg);
return true;
}
}
}
catch (Exception)
{
return false;
}
}
当代码到达image.Save(...);
时,出现以下错误:
A generic error occurred in GDI+
当图像路径错误时(对我而言)通常会发生这种情况...检查您的图像路径
我在android中将位图的array byte转为encodedString并发送,在这几步没有问题
android 请求码:
public static void uploadImageRequest(Bitmap bitmap, final Context context, final RequestListener requestListener) {
Map<String, String> postParam = new HashMap<>();
//convert Bitmat(image) to string.
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);
byte [] imageBytes = outputStream.toByteArray();
final String imageString = Base64.encodeToString(imageBytes,Base64.DEFAULT);
postParam.put("mac_address", AppUtil.getMacAddress(context));
postParam.put("token", WorkData.getData("token", context));
postParam.put("user_image" , imageString);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
Links.UPDATE_IMAGE_PROFILE_LINK, new JSONObject(postParam),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject json) {
try {
Message.messageText = json.getString("Message");
Message.messageType = json.getString("MessageType");
UserModel.isBlock = json.getBoolean("IsBlock");
UserModel.userProfileImageName = json.getString("ImageName");
requestListener.onResponse();
} catch (Exception e) {
e.printStackTrace();
requestListener.onError(e.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
requestListener.onError(error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
final RequestQueue requestQueue = Volley.newRequestQueue(context);
requestQueue.add(jsonObjReq);
requestListener.onRequest();
requestQueue.addRequestFinishedListener(new RequestQueue.RequestFinishedListener<Object>() {
@Override
public void onRequestFinished(Request<Object> request) {
requestQueue.stop();
}
});
}
在服务器中(asp.net)我成功地将 base64string 转换为数组字节。
我的转换码
var imageBytes = Convert.FromBase64String(tblUserprofile.user_image);
并作为参数传递给下面的方法。
public static bool CreateImage(byte[] imageBytes)
{
try
{
using (MemoryStream ms = new MemoryStream(imageBytes))
{
using (var image = Image.FromStream(ms))
{
image.Save("~/Content/UserProfiles/picture.jpg", ImageFormat.Jpeg);
return true;
}
}
}
catch (Exception)
{
return false;
}
}
当代码到达image.Save(...);
时,出现以下错误:
A generic error occurred in GDI+
当图像路径错误时(对我而言)通常会发生这种情况...检查您的图像路径