2016-01-20 21 views
1

發生在GDI +中的通用錯誤我現在創建了一個將值編碼爲QR碼並轉換爲圖像的應用程序。然後,我想將圖像存儲到本地。但是,我嘗試了很多我在Google和這裏找到的解決方案。這個問題每次都會出乎意料地出現。我的代碼和一個示例錯誤圖片如下所示。請幫幫我! A generic error occured in GDI+VB.NET當Bitmap.Save()

Dim qrCodeObject As QRCodeEncoder = New QRCodeEncoder() 
    Dim image As Image 
    Dim bitmap As Bitmap 

    qrCodeObject.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE 
    qrCodeObject.QRCodeScale = 6 
    qrCodeObject.QRCodeVersion = 5 
    qrCodeObject.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H 

    image = qrCodeObject.Encode(value) 
    bitmap = New Bitmap(image) 
    bitmap.Save(value + ".jpg") 

答:始終保存文件以不同的名稱,不包括任何非法字符

+1

什麼是「價值」? – Plutonix

+0

你應該用'&'連接字符串。如果您有Option Strict On,這樣更安全。 –

+0

在VB中使用'+'進行字符串串聯很容易出錯。使用'&',或者更好的是使用'Path.Combine()'來構建文件名。 @MattWilko打敗了我。 – Jens

回答

0

用簡單的字符串路徑的級聯是胡扯。 使用Path.Combine來構建路徑,因爲這可以確保您的路徑 包含所需的斜槓,否則它將無效。

Dim Pat As String = Path.Combine(String.Concat(value, ".jpg")) 

bitmap.save(Pat) 

如果這沒有幫助,我們需要知道你的情況包含「價值」。

+0

'Path.Combine'不修復/過濾或修復非法字符。測試你的代碼使用value ='「foo:bar?」'結果仍然是非法的 – Plutonix

+0

其實我的價值通常會取代哈希值ID – IvanTuang

+0

Plutonix我很抱歉,你是對的。 Path.Combine不修復/過濾或修復非法字符。 我已經看到了一個具有此功能的自寫方法。 IvanTuang你能 後當你寫,你會得到什麼: 昏暗帕特的String = Path.Combine(String.Concat(值,名爲 「.jpg」)) 拋出新的異常(PAT) ? – SiriSch