首页 > 其他分享 >图片压缩后,依然很大的解决方案

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

时间:2023-03-17 14:48:37浏览次数:27  
标签:return 解决方案 压缩 extendName ImageFormat Image 图片

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

 

 

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

代码如下: 

 

 

?
1 2 3 4 5 6 7 8 9 10 11 public void CreateThumbnailImage() {     Image img = Image.FromFile("e:/1.jpg");     Image.GetThumbnailImageAbort cb = new Image.GetThumbnailImageAbort(CallBack);     Image thumbnailImage = img.GetThumbnailImage(120, 120, cb, System.IntPtr.Zero);     thumbnailImage.Save("e:/2.jpg"); } public bool CallBack() {     return false; }

 

本来是一张大约800*700的图片(80kb),压缩到120*110左右的图片,大小应该在10kb以内,但我却发现压缩后的图片却有45kb。有个别的图片压缩后反而比原来的更大,而且用网页打开也无法显示。

 

后来查了一下相关的文档,发现.net在保存图片时,是以png默认的格式来保存,我想问题应该就是出在这了,还是试试吧。  

 

 

 

 

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

 

 

 

还真的是这样,压缩后的图片大小就只有4.6kb。

 

压缩注意事项:

1、压缩图片要指定保存的格式,虽然保存后图片名称是对的,但图片还是很大,而且在网页上还无法显示。 

2、对于图片格式为gif且为透明的图片,如果压缩后要保留透明的,那压缩的格式就要用png的,而且图片的扩展名也为png,若压缩成gif的格式,它无法保留透明的部分。

 

 

 

出处:https://www.cnblogs.com/chingho/archive/2010/06/28/1767029.html

标签:return,解决方案,压缩,extendName,ImageFormat,Image,图片
From: https://www.cnblogs.com/mq0036/p/17226709.html

相关文章