C# 按质量等级压缩图片(一)

    有时候我们对一些较大的图片进行保存的时候,需要进一步压缩以缩小其占用空间,达到节约内存的目的,亦或者前后端传输的时候,压缩空间以增快传输效率。

    所以本篇文章在下面分三个质量等级对图片进行了压缩,在效果图中可以看到明显的大小变化以及图片质量的变化

5ec302b472b14216e64f21287a36970a.png

多的就不写了,代码比较简单,大家自行运行测试吧

实现功能:

    • 压缩图片

开发环境:

开发工具:Visual Studio 2013

.NET Framework版本:4.5

实现代码:

//选择图片路径
 private void btnOld_Click(object sender, EventArgs e)
 {
     OpenFileDialog ofd = new OpenFileDialog();
     ofd.Filter = "图片|*.jpg;*.jpeg;*.png";
     if (ofd.ShowDialog() == DialogResult.OK)
     {
         txtOld.Text = ofd.FileName;
     }
 }


 //选择保存路径
 private void btnNew_Click(object sender, EventArgs e)
 {
     FolderBrowserDialog fbd = new FolderBrowserDialog();
     fbd.ShowNewFolderButton = true;
     if (fbd.ShowDialog() == DialogResult.OK)
     {
         txtNew.Text = fbd.SelectedPath;
     }
 }


 //压缩
 private void btnCompress_Click(object sender, EventArgs e)
 {
     ImgCompress(10L);
     ImgCompress(50L);
     ImgCompress(70L);
     MessageBox.Show("成功");
 }


 //压缩方法
 private void ImgCompress(long level)
 {
     Image img = Image.FromFile(txtOld.Text);
     ImageFormat imgFormat = img.RawFormat;
     EncoderParameters encoderParams = new EncoderParameters();
     encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, level);
     ImageCodecInfo codecInfo = GetEncoder(imgFormat);
     string savePath = txtNew.Text + "\\" + DateTime.Now.Ticks + "." + codecInfo.FormatDescription;
     img.Save(savePath, codecInfo, encoderParams);
     img.Dispose();
 }


 private ImageCodecInfo GetEncoder(ImageFormat format)
 {
     ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
     foreach (ImageCodecInfo codec in codecs)
     {
         if (codec.FormatID == format.Guid)
         {
             return codec;
         }
     }
     return null;
 }

实现效果:

0f8457d5ae560d6af9f72d337798e33f.gif

由简入繁,拿来即用

后续精彩,持续关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值