這裏最可能的原因是longblob
的內容是而不是原始圖像字節。而不是圍繞圈子,首先要做的是:比較他們。例如,你說(評論)數據來自jpg文件,通過OpenFileDialog
。在這種情況下,比較它們。檢查您是否已成功存儲和檢索圖像。
讓我們假設有問題的文件是c:\Some\Photo.jpg
- 儲存等每任何處理。在這種情況下,你應該能夠檢查內容是否相同。直到以下報告成功,全盤皆輸:
byte[] original = File.ReadAllBytes(@"c:\Some\Photo.jpg");
byte[] ReturnImage = reader["Photo"] as byte[];
if(Convert.ToBase64String(original) == Convert.ToBase64String(ReturnImage)) {
Console.WriteLine("Success; the contents match");
} else {
Console.WriteLine("Failure; the contents are different");
}
如果該報告「失敗,內容是不同的」,那麼,錯誤是最有可能的一個:
- 代碼準備要存儲的映像的位置(填充參數等)
- 執行存儲的存儲過程
- 將數據從數據庫中取回的代碼
如果該報告「成功;內容匹配「:當時和才是看試圖加載Image
代碼有意義的。在這種情況下,假設c:\Some\Photo.jpg
負荷在其他大多數圖像加載工具。(」漆」等) - 再它是可能是Image
不認子格式,但我的猜測是,它會說「失敗。內容是不同的。」
注意Convert.ToBase64String
這裏僅作爲一個懶惰的方法來檢查二進制等效性。在生產代碼中你不會使用這樣的,但它是精於此目的。
什麼是'讀者',你確定它是一個字節數組嗎? – Sayse
@Sayse如果它不是'byte []',我希望第一行返回一個'null',因此第二行拋出一個'ArgumentNullException' –
你怎麼會** **店這裏的數據含義:?什麼是二進制內容,你確定它真的是一個原始的,但完好,圖像 –