点击这里给我发消息 点击这里给我发消息

图片压缩后,依然很大的解决方案

添加时间:2013-12-6
    相关阅读: 网页 解决方案 方案 项目

昨天碰到一个很奇怪的事情,在最近的一个项目有这样的一个需求,把上传的图片进行压缩,避免因图片过大而影响浏览速度。

  代码也很简单三两句就可以实现了,但发现压缩后的图片,虽然有变小,但还不是很明显。

  代码如下: 

01 public void CreateThumbnailImage() 
02 { 
03     Image img = Image.FromFile("/upload/users/1/20131206/1.jpg"); 
04     Image.GetThumbnailImageAbort cb = new Image.GetThumbnailImageAbort(CallBack); 
05     Image thumbnailImage = img.GetThumbnailImage(120, 120, cb, System.IntPtr.Zero); 
06     thumbnailImage.Save("/upload/users/1/20131206/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 = "/upload/users/1/20131206/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("/upload/users/1/20131206/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的格式,它无法保留透明的部分

本文作者:未知
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册