700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C#小工具 ---- 压缩图片并指定图片大小

C#小工具 ---- 压缩图片并指定图片大小

时间:2018-11-08 23:15:52

相关推荐

C#小工具 ---- 压缩图片并指定图片大小

目录

简单的介绍

图像压缩类

简单的介绍

某宝店铺上传图片时,要求单张图片大小不能大于3M。而现在的手机像素越来越高,一张图片的字节数也越来越大。

在遇到需要大量上传图片时,那可真是苦不堪言呀。

为了满足本人懒惰的性格,就研究了一下可以根据所给的文件夹目录,自动查找所有的图片,并根据指定的压缩百分比和大小,批量压缩,并一比一存放在指定文件夹内。如图:

快压缩结束了

压缩完成弹出提示框

两个目录下的文件夹对比

图片大小对比

文件数量对比

图像压缩类

class Compression{private static ImageCodecInfo GetEncoderInfo(String mimeType){int j;ImageCodecInfo[] encoders;encoders = ImageCodecInfo.GetImageEncoders();for (j = 0; j < encoders.Length; ++j){if (encoders[j].MimeType == mimeType)return encoders[j];}return null;}/// <summary>/// 通过质量压缩图片/// </summary>/// <param name="iSource">传入的Bitmap对象</param>/// <param name="cStream">压缩后的Stream对象</param>/// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>public static void Compress(Bitmap iSource, Stream cStream, long level){ImageCodecInfo myImageCodecInfo;Encoder myEncoder;EncoderParameter myEncoderParameter;EncoderParameters myEncoderParameters;// Get an ImageCodecInfo object that represents the JPEG codec.myImageCodecInfo = GetEncoderInfo("image/jpeg");// Create an Encoder object based on the GUID// for the Quality parameter category.myEncoder = Encoder.Quality;// 创建一个 EncoderParameters 对象.// 一个 EncoderParameters 对象有一组EncoderParameter对象// 在下面的代码中,EncoderParameters数组中只有一个EncoderParameter对象myEncoderParameters = new EncoderParameters(1);// 用给定的Level值压缩图片myEncoderParameter = new EncoderParameter(myEncoder, level);myEncoderParameters.Param[0] = myEncoderParameter;iSource.Save(cStream, myImageCodecInfo, myEncoderParameters);}/// <summary>/// 通过递归的方式,以起点level 和 终点 图像字节长度length 对图像进行压缩 /// </summary>/// <param name="srcBitMap">传入的Bitmap对象</param>/// <param name="destFile">压缩后的图片保存路径</param>/// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>/// <param name="length">终点长度 单位字节; 1024字节 = 1kb ; 1024kb = 1MB </param>public static void Compress(Bitmap srcBitMap, string destFile, long level,long length){Stream s = new FileStream(destFile, FileMode.Create);Compress(srcBitMap, s, level);if (s.Length > length){s.Close();if(File.Exists(destFile)){File.Delete(destFile);}Compress(srcBitMap, destFile, --level, length);}s.Close();srcBitMap.Dispose();}}

【有觉得需要其他压缩功能可以发表评论,本人能力够的话可以做到这个小工具里,其他功能也会持续更新】

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。