通过Web服务保存图像

时间:2012-11-08 17:30:13

标签: vb.net web-services gdi+

好吧,长话短说。我正在开发类似于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正在抛出异常。

1 个答案:

答案 0 :(得分:0)

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