C#保存圖片設置圖片質量的方法

主要用到System.Drawing.Imaging命名空間下的ImageCodecInfo、Encoder、EncoderParameter、EncoderParameters四個類數組

實現代碼測試

代碼是來自MSDN上的,本身也是初學,寫了些註釋。ui

 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是原圖spa

相關文章
相關標籤/搜索