当前位置: 代码迷 >> 综合 >> C# Image.Save(pictureBox1.Image.Save)以jpg(jpeg)格式保存图片并设置quality
  详细解决方案

C# Image.Save(pictureBox1.Image.Save)以jpg(jpeg)格式保存图片并设置quality

热度:95   发布时间:2024-01-26 02:10:51.0

参考:https://docs.microsoft.com/en-us/dotnet/api/system.drawing.imaging.encoderparameter?view=netframework-4.8

private void VaryQualityLevel()  {  // Get a bitmap. The using statement ensures objects // are automatically disposed from memory after use. using (Bitmap bmp1 = new Bitmap(@"C:\TestPhoto.jpg"))  {  ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);  // Create an Encoder object based on the GUID // for the Quality parameter category. System.Drawing.Imaging.Encoder myEncoder =  System.Drawing.Imaging.Encoder.Quality;  // Create an EncoderParameters object. // An EncoderParameters object has an array of EncoderParameter // objects. In this case, there is only one // EncoderParameter object in the array. EncoderParameters myEncoderParameters = new EncoderParameters(1);  EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);  myEncoderParameters.Param[0] = myEncoderParameter;  bmp1.Save(@"c:\TestPhotoQualityFifty.jpg", jpgEncoder, myEncoderParameters);  myEncoderParameter = new EncoderParameter(myEncoder, 100L);  myEncoderParameters.Param[0] = myEncoderParameter;  bmp1.Save(@"C:\TestPhotoQualityHundred.jpg", jpgEncoder, myEncoderParameters);  // Save the bitmap as a JPG file with zero quality level compression. myEncoderParameter = new EncoderParameter(myEncoder, 0L);  myEncoderParameters.Param[0] = myEncoderParameter;  bmp1.Save(@"C:\TestPhotoQualityZero.jpg", jpgEncoder, myEncoderParameters);  }  }  
private ImageCodecInfo GetEncoder(ImageFormat format)  
{  ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();  foreach (ImageCodecInfo codec in codecs)  {  if (codec.FormatID == format.Guid)  {  return codec;  }  }  return null;  
}  
  相关解决方案