Отправить изображение с Android на веб-службу ASP.NET

Я разрабатываю приложение для Android, которое должно отправить изображение на веб-службу ASP.NET, где изображение будет сохранено в виде файла. Я видел пару способов сделать это, и я пошел на это: конвертируйте изображение в массив байтов -> преобразуйте массив байтов в строку -> отправьте строку в веб-службу с помощью KSOAP2 -> получите строку На веб-службе -> преобразовать его в массив байтов -> сохранить его как изображение:

IVtest = (ImageView)findViewById(R.id.carticon); BitmapDrawable drawable = (BitmapDrawable) IVtest.getDrawable(); Bitmap bitmap = drawable.getBitmap(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] data = baos.toByteArray(); ImageView image=new ImageView(this); image.setImageBitmap(bmp); String strBase64 = Base64.encode(data); 

Затем я отправляю strBase64 в веб-службу. В веб-службе у меня есть следующее:

 public Image ConvertToImage(byte[] image) { MemoryStream ms = new MemoryStream(image); Image returnImage = Image.FromStream(ms); return returnImage; } [WebMethod] public String UploadImage(String image, String name) { byte[] image_byte = Encoding.Unicode.GetBytes(image); Image convertedImage = ConvertToImage(image_byte); try { convertedImage.Save(Server.MapPath("generated_image.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); } catch (Exception e) { return e.Message; } return "Success"; } 

Я получаю сообщение об ошибке: Image returnImage = Image.FromStream(ms);

Это ошибка, которую я получаю:

 SoapFault - faultcode: 'soap:Server' faultstring: 'System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.ArgumentException: Parameter is not valid. at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData) at System.Drawing.Image.FromStream(Stream stream) at Service.ConvertToImage(Byte[] image) in e:\FTP\nvm\Service.asmx:line 1366 at Service.UploadImage(String image, String name) in e:\FTP\nvm\Service.asmx:line 1374 --- End of inner exception stack trace ---' faultactor: 'null' detail: org.kxml2.kdom.Node@437bf7b0 

благодаря

Похоже, что есть что-то, что связано с преобразованием из строки в изображение. Также вы не уничтожаете свой поток, который будет утечка памяти.

Попробуйте это вместо этого:

 private Image Base64ToImage(string base64String) { // Convert Base64 String to byte[] byte[] imageBytes = Convert.FromBase64String(base64String); using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length)) { // Convert byte[] to Image ms.Write(imageBytes, 0, imageBytes.Length); Image image = Image.FromStream(ms, true); return image; } }