2016-12-30 3 views
0

Ich konvertiere Array-Byte von Bitmap in codedString und senden mit Volley in Android, und haben kein Problem in diesen Schritten."Ein generischer Fehler trat in GDI +" Fehler beim Speichern von Bild in Datei

android Anforderungscode:

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

in Server (asp.net) I umwandeln base64string successfuly auf Array-Byte.

meine convert Code

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

und dem folgenden Verfahren als Parameter übergeben.

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

, wenn der Code auf image.Save(...); ankommt, wird der folgende Fehler auftritt:

Ein allgemeiner Fehler in GDI aufgetreten +

+0

dies passiert in der Regel (für mich), wenn der Pfad des Bildes falsch ist –

+0

ja danke, Problem gelöst. – batnight

+0

ich poste als antwort .. so kann es anderen helfen ... wenn du kannst und willst bewerte es .. –

Antwort

0

dies in der Regel passieren (für mich), wenn der Pfad des Bildes ist falsch ... überprüfen Sie Ihre Bilder Pfade

Verwandte Themen