C# 按质量等级压缩图片(一)
				
									
					
					
						|  | 
							admin 2023年2月27日 10:41
								本文热度 2027 | 
					
				 
				    有时候我们对一些较大的图片进行保存的时候,需要进一步压缩以缩小其占用空间,达到节约内存的目的,亦或者前后端传输的时候,压缩空间以增快传输效率。
    所以本篇文章在下面分三个质量等级对图片进行了压缩,在效果图中可以看到明显的大小变化以及图片质量的变化。
多的就不写了,代码比较简单,大家自行运行测试吧
实现功能:
开发环境:
开发工具: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; }
实现效果:

					
					
该文章在 2023/2/27 10:41:33 编辑过