2009-08-12 95 views
6

在我的數據庫中,我將圖像存儲在「圖像」數據類型中,顯示爲二進制代碼。 我現在想要從一列中檢索所有圖像,並用C#將它們放在一個asp.net頁面上。從Linq到SQL的數據庫檢索圖像

databaseDataContext db = new databaseDataContext(); 

    var images = from Picture p in db.Pictures 
       select p.pictureThumb; 

然後我用這個:

但是,這並不工作,因爲二進制不能被轉換爲圖片。我已經谷歌搜索,發現我必須投到字節,然後形象?我找不到如何做到這一點的例子。

回答

11

這應做到:

databaseDataContext db = new databaseDataContext(); 

var images = from p in db.Pictures 
      select Image.FromStream(new MemoryStream(p.pictureThumb.ToArray()); 
foreach (Image image in images) 
{ 
    galleryImages.Controls.Add(image); 
} 

注意Image.FromStream採用流的所有權 - 它只是一個MemoryStream反正,但請確保您處理的圖像,由於種種原因。


編輯:啊......我沒有意識到這是ASP.NET。這使事情變得更加困難 - 因爲HTML將包含URL,然後您需要能夠稍後獲取數據。

圖片是否有某種ID?如果是這樣,請取出實際數據,然後設置一個能夠基於ID提供任何縮略圖的URL(通過從數據庫中提取它並使用適當的內容類型提供它)。

+0

謝謝,這照顧了很多問題。雖然我在循環中遇到了一些問題,「最好的重載方法匹配有一些無效參數」。 galleryImages指的是一個PlaceHolder,但其他可能性(文字,圖像等)給出了相同的錯誤。加上添加(圖片)告訴我「不能從'System.Drawing.Image'轉換爲'System.Web.UI.Control'」。我敢打賭,這很明顯,我對.NET很不熟悉:o – Kablam 2009-08-12 14:02:34

+1

這樣做:) 從數據庫中檢索pictureID,然後使用getImage.aspx.cs提取實際的imagedata。使用ContentType =「image/jpeg」;和BinaryWrite。 謝謝喬恩! – Kablam 2009-08-12 14:43:42

+0

酷 - 對於自稱「非常缺乏經驗」的人來說,這是一個非常快速的轉變:) – 2009-08-12 14:45:00

相關問題