2016-12-30 1 views
0

비트 맵의 ​​배열 바이트를 encodedString으로 변환하고 android에서 발리와 함께 보내고이 단계에서 문제가 없습니다."GDI +에서 일반 오류가 발생했습니다."오류로 이미지를 파일에 저장

안드로이드 요청 코드 :

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)에서 나는 successfuly 배열 바이트 base64string 변환합니다.

내 변환 코드

var imageBytes = Convert.FromBase64String(tblUserprofile.user_image); 

및 매개 변수로 다음과 같은 방법으로 전달합니다. 코드가 image.Save(...);에 도착했을 때

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; 
     } 
    } 

, 다음과 같은 오류가 발생합니다

일반 오류가 +

+0

이미지 경로가 잘못되었을 때 대개 이런 일이 발생합니다. –

+0

예, 문제가 해결되었습니다. – batnight

+0

나는 대답으로 게시 .. 그래서 다른 사람들을 도울 수 ... 만약 당신이 할 수 있고 그것을 원한다면 .. –

답변

0

이 이미지의 경우 경로 (나를 위해) 보통 일이 GDI 발생 잘못되었습니다 ... 이미지 경로를 확인하십시오.

관련 문제