2012-11-08 103 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