程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 圖片壓縮後,依然很大的解決方案

圖片壓縮後,依然很大的解決方案

編輯:關於.NET

昨天碰到一個很奇怪的事情,在最近的一個項目有這樣的一個需求,把上傳的圖片進行壓縮,避免因圖片過大而影響浏覽速度。

代碼也很簡單三兩句就可以實現了,但發現壓縮後的圖片,雖然有變小,但還不是很明顯。

代碼如下:

01 public void CreateThumbnailImage()
02 {
03     Image img = Image.FromFile("e:/1.jpg");
04     Image.GetThumbnailImageAbort cb = new Image.GetThumbnailImageAbort(CallBack);
05     Image thumbnailImage = img.GetThumbnailImage(120, 120, cb, System.IntPtr.Zero);
06     thumbnailImage.Save("e:/2.jpg");
07 }
08 public bool CallBack()
09 {
10     return false;
11 }

本來是一張大約800*700的圖片(80kb),壓縮到120*110左右的圖片,大小應該在10kb以內,但我卻發現壓縮後的圖片卻有45kb。有個別的圖片壓縮後反而比原來的更大,而且用網頁打開也無法顯示。

後來查了一下相關的文檔,發現.net在保存圖片時,是以png默認的格式來保存,我想問題應該就是出在這了,還是試試吧。

01 //獲得縮略圖
02 public void CreateThumbnailImage()
03 {
04     string imgFile = "e:/1.jpg";
05     Image img = Image.FromFile(imgFile);
06     Image.GetThumbnailImageAbort cb = new Image.GetThumbnailImageAbort(CallBack);
07     Image thumbnailImage = img.GetThumbnailImage(120, 120, cb, System.IntPtr.Zero);
08     string extendName = imgFile.Substring(imgFile.LastIndexOf(".") + 1);
09     ImageFormat imgFormat = GetImageFormat(extendName);
10     thumbnailImage.Save("e:/2.jpg",imgFormat);
11 }
12 public bool CallBack()
13 {
14     return     false;
15 }
16 //獲得圖片格式
17 private static ImageFormat GetImageFormat(String extendName)
18 {
19     extendName = extendName.ToLower();
20     if (extendName == "gif")
21     {
22         return ImageFormat.Gif;
23     }
24     else if (extendName == "jpg" || extendName == "jpeg")
25     {
26         return ImageFormat.Jpeg;
27     }
28     else if (extendName == "bmp")
29     {
30         return ImageFormat.Bmp;
31     }
32     else if (extendName == "wmf")
33     {
34         return ImageFormat.Emf;
35     }
36     else if (extendName == "exif")
37     {
38         return ImageFormat.Exif;
39     }
40     else if (extendName == "icon")
41     {
42         return ImageFormat.Icon;
43     }
44     else if (extendName == "tiff")
45     {
46         return ImageFormat.Tiff;
47     }
48     else 
49     {
50         return ImageFormat.Png;
51     }
52 }

還真的是這樣,壓縮後的圖片大小就只有4.6kb。

壓縮注意事項:

1、壓縮圖片要指定保存的格式,雖然保存後圖片名稱是對的,但圖片還是很大,而且在網頁上還無法顯示。

2、對於圖片格式為gif且為透明的圖片,如果壓縮後要保留透明的,那壓縮的格式就要用png的,而且圖片的擴展名也為png,若壓縮成gif的格式,它無法保留透明的部分。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved