2010-01-14 30 views
2

首先對於英語感到抱歉。當我嘗試從winbox應用程序中的picturebox保存位圖(「Generic GDI + error」)時,我遇到了一個奇怪的問題,我知道在嘗試保存到沒有權限的目錄時會出現此問題,但在這種情況下,我試圖將它保存到一個memoryStream。Image GDI + Error c#

using (MemoryStream fotoStream = new MemoryStream()) 
{ 
    Bitmap imagen = picture1.Image as Bitmap; 
    imagen.Save(fotoStream, imagen.RawFormat); //Error here 
    byte[] array = fotoStream.ToArray(); 
    fotoStream.Close(); 
} 

對此有何看法?

+2

不要爲我們道歉英文民間:( – Codesleuth 2010-01-14 13:58:21

+0

我想你可能需要顯示更多的代碼。這裏有一些潛在的問題......但是,首先想到的是:確保你的形象因爲位圖轉換不計算爲NULL – 2010-01-14 14:13:28

+0

好像有人說的那樣,它不是一個空的異常,甚至出現了一些奇怪的行爲:我從磁盤加載圖像到圖片框,這個圖像保存在流中,數組是保存到數據庫,當我從數據庫中加載圖像並嘗試再次保存(無需修改)時,會引發「Generic GDI + error」 奇怪:S – Argons 2010-01-14 14:32:03

回答

0

你能保存圖像的任何其他格式,或通過調用沒有指定格式的Save重載嗎?

您是否檢查過圖像的尺寸以確保寬度和高度都不爲零?

+0

我無法使用重載保存圖像,因爲我正在使用的是唯一一個接受流的文件。 – Argons 2010-01-14 14:22:21

+0

@Argons:您是否嘗試過使用不同的格式? – 2010-01-14 15:02:19

0

如何將它保存到數據庫?你可能想要創建一個測試程序來比較你發送給數據庫的內容和你回來的內容,以確保它們是相同的。

你可以給我們例外的完整堆棧跟蹤嗎?在這種情況下,imagen不能爲null,否則當試圖訪問.RawFormat時異常將是空的異常。

imagen在調試器中看起來像什麼?

+0

全堆棧跟蹤: 烯System.Drawing.Image.Save(流流,編碼器ImageCodecInfo,EncoderParameters encoderParams) 烯System.Drawing.Image.Save(流流的imageformat格式) 烯SPCC.Win.Seguridad。 () 但我認爲是與東西有關的東西RawFormat,因爲我正在從數據庫加載圖像。有沒有人有同樣的問題? – Argons 2010-01-14 14:42:57

+0

我正在使用NHibernate來保存數據,它正確地保存和加載圖像,當我從數據庫中加載圖像正確顯示在圖片框上時,問題是當我嘗試保存從數據庫加載的同一圖像時。如果我將另一個圖像加載到圖片框中,則不會引發錯誤。 – Argons 2010-01-14 15:04:21