zoukankan      html  css  js  c++  java
  • 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是原图

  • 相关阅读:
    phpexcel 字符串转码
    thinkphp 3.2 linux二级目录安装
    linux 系统、命令、软件
    thinkphp3.2和phpexcel导入
    苹果手机微信分享代码失效
    thinkphp3.2与phpexcel带图片生成 完美案例
    thinkphp3.2与phpexcel基础生成
    thinkphp 3.2加载类
    thinkphp 3.2与phpexcel
    thinkphp 导出exl功能
  • 原文地址:https://www.cnblogs.com/zhaotianff/p/5570321.html
Copyright © 2011-2022 走看看