2014-03-27 317 views
0

我是新來的asp.net。我現在有一個問題。我需要在存儲到我的數據庫之前壓縮圖像。我搜索了很多時間。壓縮圖像asp.net

但大多數教程指導我需要在存儲到數據庫之前調整寬度和高度。所以NW是我的問題是有可能壓縮圖像沒有調整寬度和高度存儲到數據庫之前。請指導我的解決方案。

例如http://compressnow.com/

回答

0

您可能需要使用GZIP

byte[] fileBytes = File.ReadAllBytes(FilePath); 
byte[] compressedFileBytes = Compress(fileBytes); //compress 
byte[] decompressedFileBytes = Decompress(compressedFileBytes); //decompress 

byte[] Compress(byte[] b) 
{ 
    using (MemoryStream ms = new MemoryStream()) 
    { 
     using (GZipStream z = new GZipStream(ms, CompressionMode.Compress, true)) 
      z.Write(b, 0, b.Length); 
     return ms.ToArray(); 
    } 
} 
byte[] Decompress(byte[] b) 
{ 
    using (var ms = new MemoryStream()) 
    { 
     using (var bs = new MemoryStream(b)) 
     using (var z = new GZipStream(bs, CompressionMode.Decompress)) 
      z.CopyTo(ms); 
     return ms.ToArray(); 
    } 
} 
+0

謝謝你好的評論。順便說一句,我應該需要解壓縮圖像文件,如果我想在我的面板中顯示圖像? – user998405

+0

是的,你必須解壓縮 – kobe

+0

圖像格式已經被壓縮,所以沒有任何額外的開銷。有些工具可以在命令行中使用,例如PNGCrush等(您可以在C#FWIW中執行命令行應用程序)。您還可以使用像kraken.io這樣的服務及其API來優化圖像。我不確定將它們存儲在數據庫中是我的經驗中的最佳選擇。但它不是我的項目... :) –