2016-12-30 5 views
0

ビットマップの配列バイトをencodedStringに変換し、アンドロイドでvolleyと共に送信し、これらの手順で問題はありません。"GDI +で一般的なエラーが発生しました"エラー画像をファイルに保存

アンドロイド要求コード:サーバー(asp.net)で

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

Iはsuccessfulyアレイバイトに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(...);に到着したとき、次のエラーが発生します。

一般的なエラーがGDIに発生した+

+0

これは、画像のパスが間違っている場合、通常(私にとって)起こります。 –

+0

はい、ありがとうございます。 – batnight

+0

私は答えとして投稿する..それは他の人を助けることができる...あなたができる場合は、それをレートしたい.. –

答えて

0

時に画像のパスこれは(私にとって)通常起こります間違っています...あなたの画像パスを確認してください

関連する問題