C#保存图片设置图片质量的方法

主要用到System.Drawing.Imaging命名空间下的ImageCodecInfo、Encoder、EncoderParameter、EncoderParameters四个类

实现代码

代码是来自MSDN上的,自己也是初学,写了些注释。

 1 private void VaryQualityLevel()
 2         {
 3             
 4             Bitmap bmp1 = new Bitmap(@"7.jpg");
 5             ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
 6 
 7             //创建一个Endoder对象
 8             System.Drawing.Imaging.Encoder myEncoder =
 9                 System.Drawing.Imaging.Encoder.Quality;
10 
11             // 创建一个EncoderParameters对象.
12             // 一个EncoderParameters对象有一个EncoderParameter数组对象
13             EncoderParameters myEncoderParameters = new EncoderParameters(1);
14 
15             EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);//这里的50L用来设置保存时的图片质量
16             //测试时400多K的图片保存为100多K,图片失真也不是很厉害
17             myEncoderParameters.Param[0] = myEncoderParameter;
18             bmp1.Save(@"TestPhotoQualityFifty.jpg", jgpEncoder, myEncoderParameters);
19 
20             myEncoderParameter = new EncoderParameter(myEncoder, 100L);//设置为100时,比原图大了几KB。
21             myEncoderParameters.Param[0] = myEncoderParameter;
22             bmp1.Save(@"TestPhotoQualityHundred.jpg", jgpEncoder, myEncoderParameters);
23 
24             //设置为0是,图片失真
25             myEncoderParameter = new EncoderParameter(myEncoder, 0L);
26             myEncoderParameters.Param[0] = myEncoderParameter;
27             bmp1.Save(@"TestPhotoQualityZero.jpg", jgpEncoder, myEncoderParameters);
28 
29         }
30 
31 
32 
33 
34 
35         private ImageCodecInfo GetEncoder(ImageFormat format)
36         {
37 
38             ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
39 
40             foreach (ImageCodecInfo codec in codecs)
41             {
42                 if (codec.FormatID == format.Guid)
43                 {
44                     return codec;
45                 }
46             }
47             return null;
48         }

图中7是原图

posted @ 2016-06-08 15:49  zhaotianff  阅读(7550)  评论(0编辑  收藏  举报