2012-02-22 15 views
5

पर एक छवि भेजें, मैं एक एंड्रॉइड ऐप विकसित कर रहा हूं जो मेरी एएसपी.नेट वेब सेवा पर एक छवि भेजनी चाहिए जहां छवि फ़ाइल के रूप में सहेजी जाएगी। मैंने ऐसा करने के कुछ तरीके देखे हैं और मैं इसके लिए गया: छवि को बाइट सरणी में कनवर्ट करें -> बाइट सरणी को स्ट्रिंग में कनवर्ट करें -> स्ट्रिंग को KSOAP2 का उपयोग करके वेब सेवा पर भेजें -> स्ट्रिंग प्राप्त करेंएंड्रॉइड से एक एएसपी.NET वेब सेवा

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 भेजें: वेब सेवा पर - एक छवि के रूप में यह सहेजें> -> एक बाइट सरणी के लिए परिवर्तित। वेब सेवा में मैं इस है: Image returnImage = Image.FromStream(ms);

यह त्रुटि मैं मिलता है:

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

मैं इस लाइन में कोई त्रुटि मिलती है

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: [email protected] 

धन्यवाद

उत्तर

5

ऐसा लगता है कि स्ट्रिंग से छवि में आपके रूपांतरण के साथ कुछ iffy है। इसके अलावा आप अपनी स्ट्रीम का निपटारा नहीं कर रहे हैं जो स्मृति को रिसाव करेगा।

ऐसा करें:

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

धन्यवाद एक बहुत, कि काम किया है। आखिरकार सर्वर पर छवि है :) – ice

संबंधित मुद्दे