2013-03-12 51 views
-3

我在C#.net 4.0中使用VS 2008創建一個asp.net應用程序& MS SQL Server 2008 R2。我想爲每個訂單上載圖像(.bmp),並將其存儲在與其訂單相對應的數據庫中。必須在功能請求視圖時檢索它。大容量圖像存儲在SQL Server 2008中

我的要求是存儲圖像並檢索它。訂單數量可能是每天約50個訂單。隨着人數的增加,這可能會超過開銷。請建議我解決內存問題的有效方法。

+0

壓縮圖像?購買更大的硬盤? (你有什麼問題?) – 2013-03-12 16:26:27

+0

你的帖子中沒有提到的問題。有「請建議我有效的方法來克服內存問題」,但沒有解釋「內存問題」是什麼。 SQL和W2K8R2 x64都可以毫不費力地處理相當大的文件......尤其是在每小時2次請求的計劃負載下。 – 2013-03-12 16:43:18

回答

0

那麼,您可以將它們作爲varbinary(max)存儲在數據庫中,也可以將URL存儲到文件中。如果您每天有50張圖片,最好使用文件和網址方法。

兩者都有優點和缺點。但正如你所說,你想要將它們存儲在數據庫中: 我認爲數據庫存儲上的一個重要原因是,沒有人可以隨便登錄並重命名/刪除文件夾,或者混淆其中的文件。 數據庫的另一個優點是您可以恢復數據庫,而不必嘗試保持文件夾保持同步。

您可以使用ImageConverter到字節數組之間轉換爲圖像和背部

 var stream = new MemoryStream(); 
    var imageData = DataAccess.GetImageData(); //Returns a System.Linq.Binary for me 
    var imgageBinaryData = imageData.ImageData.ToArray(); //This returns a byte array 
    var img = Image.FromStream(stream);  //Here is your image ready for displaying 

然後回去像

 var stream = new MemoryStream(); 
    img.Save(stream,System.Drawing.Imaging.ImageFormat.Jpeg); 
    var myBytes = ms.ToArray(); 

編輯了一句:哦,它們存儲爲JPEG格式,而比Bmp節省了很多空間