C#按质量等级压缩图片

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

所以本篇文章在下面分三个质量等级对图片进行了压缩,在效果图中可以看到明显的大小变化以及图片质量的变化。多的就不写了,代码比较简单,大家自行运行测试吧。.

实现功能:压缩图片

开发环境: 开发工具: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;
 }

实现效果:

C#按质量等级压缩图片