通过Web服务保存图像



好的,长话短说。我正在开发类似于设备UPS交付潜水员使用的软件。我们必须采取方法来获得交付证明(POD)。第一个是签名,第二个是相机拍摄的图片。

现在,捕获这些图像的设备将它们发送到我们拥有的Web服务,然后将其保存在服务器上。该设备将这两种作为不同的文件类型保存,用于签名的PNG,而JPG则保存为图片,但是Web服务将它们保存为JPG文件。目前,签名正在正常工作,但图片不断抛出一个例外"通用异常发生了GDI "。

我不明白为什么一个人会保存正常,而另一个人则继续传达错误消息。尤其是因为它们在服务器端时都使用相同的代码。

我已经搜索了堆栈溢出,但还没有找到解决我问题的任何东西,我已经谷歌搜索了无济于事。任何人都有关于如何获取图片保存的建议?

设备逻辑将图像转换为字符串,因此可以将其发送到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

那个图像。Save是抛出异常的原因。

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

最新更新