C#按指定质量保存图片的实现代码

发布时间:2020-10-20编辑:脚本学堂
分享一例c#实现的可以按指定质量保存图片的代码,要使生成的图片质量有所提高,需要设定EncoderParameters类的质量参数和ImageCodecInfo类的图片保存格式。

本节内容:
通过设定EncoderParameters类的质量参数、ImageCodecInfo类的图片保存格式,实现按指定质量保存图片。

我们知道,微软的Image.Save方法保存到图片压缩质量为75,所以保存的图片质量偏低。
如果要使生成的图片质量有所提高,则必须设定EncoderParameters类的质量参数和ImageCodecInfo类的图片保存格式。

System.Drawing.Imaging.Encoder类来制定需要呈现的方式和各种参数,例如图片质量参数、扫描方法参数、色度表参数、压缩参数、颜色深度等。

具体的步骤与方法,概括如下:
对System.Drawing.Imaging.Encoder设置,然后通过System.Drawing.Imaging.Encoder构造出来EncoderParameter类,将EncoderParameter传递给EncoderParameters数组,从而得到一个完全符合自己意愿的图片。

以下是具体的操作步骤,分享出来,供大家学习参考。

首先,引入命名空间:
using System.Drawing.Imaging;

操作代码:
 

复制代码 代码示例:
/// <summary>
  /// 按指定的压缩质量及格式保存图片(微软的Image.Save方法保存到图片压缩质量为75)
  /// </summary>
  /// <param name="sourceImage">要保存的图片的Image对象</param>
  /// <param name="savePath">图片要保存的绝对路径</param>
  /// <param name="imageQualityValue">图片要保存的压缩质量,该参数的值为1至100的整数,数值越大,保存质量越好</param>
  /// <returns>保存成功,返回true;反之,返回false</returns>
  public bool SaveImageForSpecifiedQuality(System.Drawing.Image sourceImage, string savePath, int imageQualityValue)
  {
      //以下代码为保存图片时,设置压缩质量
      EncoderParameters encoderParameters = new EncoderParameters();
      EncoderParameter encoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, imageQualityValue);
      encoderParameters.Param[0] = encoderParameter;
      try
    {
    ImageCodecInfo[] ImageCodecInfoArray = ImageCodecInfo.GetImageEncoders();
    ImageCodecInfo jpegImageCodecInfo = null; www.jb200.com
    for (int i = 0; i < ImageCodecInfoArray.Length; i++)
    {
        if (ImageCodecInfoArray[i].FormatDescription.Equals("JPEG"))
        {
      jpegImageCodecInfo = ImageCodecInfoArray[i];
      break;
        }
    }   
    sourceImage.Save(savePath, jpegImageCodecInfo, encoderParameters);  
    return true;
      }
      catch
      {
    return false;
      }
  }

调用示例:
 

复制代码 代码示例:
//按指定质量保存图片,提高图片保存质量。
System.Drawing.Image image = System.Drawing.Image.FromFile("D:TestImage.jpg");
SaveImageForSpecifiedQuality(image, "D:TestImage1.jpg", 100, ImageFormat.Jpeg);image.Dispose();