zoukankan      html  css  js  c++  java
  • .Net上传图片压缩质量,不改变尺寸

    图片上传有很多情况需要考虑,例如:生成缩略图、压缩尺寸、压缩质量、压缩尺寸质量、添加水印等等常见情况。最近遇到图片质量压缩不改变大小的问题,参考:听浪

     1 #region 图片压缩
     2 /// <summary>
     3 /// 图片压缩(降低质量以减小文件的大小)
     4 /// </summary>
     5 /// <param name="srcBitMap">传入的Bitmap对象</param>
     6 /// <param name="destFile">压缩后的图片保存路径</param>
     7 /// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>
     8 public static void Compress(Bitmap srcBitMap, string destFile, long level)
     9 {
    10     Stream s = new FileStream(destFile, FileMode.Create);
    11     Compress(srcBitMap, s, level);
    12     s.Close();
    13 }
    14 
    15 /// <summary>
    16 /// 编码信息
    17 /// </summary>
    18 /// <param name="mimeType"></param>
    19 /// <returns></returns>
    20 private static ImageCodecInfo GetEncoderInfo(String mimeType)
    21 {
    22     int j;
    23     ImageCodecInfo[] encoders;
    24     encoders = ImageCodecInfo.GetImageEncoders();
    25     for (j = 0; j < encoders.Length; ++j)
    26     {
    27         if (encoders[j].MimeType == mimeType)
    28             return encoders[j];
    29     }
    30     return null;
    31 }
    32 
    33 /// <summary>
    34 /// 图片压缩(降低质量以减小文件的大小)
    35 /// </summary>
    36 /// <param name="srcBitmap">传入的Bitmap对象</param>
    37 /// <param name="destStream">压缩后的Stream对象</param>
    38 /// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>
    39 private static void Compress(Bitmap srcBitmap, Stream destStream, long level)
    40 {
    41     ImageCodecInfo myImageCodecInfo;
    42     Encoder myEncoder;
    43     EncoderParameter myEncoderParameter;
    44     EncoderParameters myEncoderParameters;
    45     // Get an ImageCodecInfo object that represents the JPEG codec.
    46     myImageCodecInfo = GetEncoderInfo("image/jpeg");
    47     // Create an Encoder object based on the GUID
    48     // for the Quality parameter category.
    49     myEncoder = Encoder.Quality;
    50     // Create an EncoderParameters object.
    51     // An EncoderParameters object has an array of EncoderParameter
    52     // objects. In this case, there is only one
    53     // EncoderParameter object in the array.
    54     myEncoderParameters = new EncoderParameters(1);
    55     // Save the bitmap as a JPEG file with 给定的 quality level
    56     myEncoderParameter = new EncoderParameter(myEncoder, level);
    57     myEncoderParameters.Param[0] = myEncoderParameter;
    58     srcBitmap.Save(destStream, myImageCodecInfo, myEncoderParameters);
    59 }
    60 #endregion

    参考:听浪 http://www.cnblogs.com/ainidewen/p/4556543.html

  • 相关阅读:
    [置顶] 【Git入门之十五】Github操作指南
    hdu 3698 Let the light guide us(线段树优化&简单DP)
    拥有最小高度能自适应高度,IE、FF全兼容的div设置
    浏览器小览【欢迎讨论】
    实习心得体会--在一家互联网公司4个月的心得体会
    九度online judge 1543 二叉树
    指令系统是指计算机所能执行的全部指令的集合
    电脑的CPU可直接解读的数据机器码
    解释是一句一句的翻译
    编译解释两种方式只是翻译的时间不同
  • 原文地址:https://www.cnblogs.com/dingshuanglei/p/9052332.html
Copyright © 2011-2022 走看看