2012-11-08 100 views
1

好吧,长话短说。我正在开发类似于UPS交付潜水员使用的设备的软件。我们必须要有方法来获得交货证明(POD)。第一个是签名,第二个是相机拍摄的照片。通过网络服务保存图片

现在,捕获这些图像的设备将它们发送到我们拥有的Web服务,然后将它们保存在服务器上。设备将这两个文件保存为不同的文件类型,png用于签名和图片的jpg,但Web服务将它们保存为jpg文件。目前签名正在工作,但图片不断抛出异常“发生了一般异常gdi +”。

我不明白为什么一个人会保存得很好,但另一个人一直抛出错误信息。特别是因为它们在服务器端时都使用相同的代码。

我走了搜查抛出堆栈溢出,并没有找到任何解决我的问题,我GOOGLE了无济于事。任何人都有什么建议如何让图片保存?

将图像转换为字符串以便将其发送到Web服务的设备逻辑。

**Picture from camera logic** 
Using MS As New System.IO.MemoryStream(), BM As New Bitmap(ImagePath) 
    BM.Save(MS, System.Drawing.Imaging.ImageFormat.Jpeg) 
    ImageString = Convert.ToBase64String(MS.ToArray()) 
End Using 

**Signature logic** 
Using MS As New System.IO.MemoryStream(), BM As New Bitmap(ImagePath) 
    BM.Save(MS, System.Drawing.Imaging.ImageFormat.png) 
    ImageString = Convert.ToBase64String(MS.ToArray()) 
End Using 

Web服务逻辑将图像变回字符串,然后将其保存为jpeg。

Dim Image As Drawing.Bitmap = Nothing 
Dim ByteImage As Byte() 

If ImageString.IsNullOrEmpty = False Then 
    ByteImage = Convert.FromBase64String(ImageString) 

    Using stream As New MemoryStream(ByteImage, 0, ByteImage.Length)  
     stream.Write(ByteImage, 0, ByteImage.Length) 
     Image = CType(Drawing.Bitmap.FromStream(stream, True), Drawing.Bitmap) 
    End Using 
    Image.Save(FileLocation,Drawing.Imaging.ImageFormat.Jpeg) 
End If 

Image.Save是什么引发异常。

+0

我认为您需要提供具体细节(附带代码示例),以便任何人协助您。 –

+0

我已经添加了一些示例代码。 – GH23

回答

0

您似乎将图像保存到手机中的某些媒体上,然后再次阅读并发送。不要这样做。只需保存它,base 64编码整个文件,发送该base 64编码的字符串。

+0

谢谢,它工作 – GH23