• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > net编程 >

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

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-06-27点击:

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

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

代码如下:

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的格式,它无法保留透明的部分。

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ