• .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

  • 相关阅读:
    d
    今天刚注册,测试下
    关于Hadoop的简单介绍
    leveldb 阅读笔记 (2) 简易测试框架
    leveldb 阅读笔记(1) 内存分配器 Arena
    数论
    伴随网站
    convenience website
    大佬独特的骗分技巧
    动态规划
  • 原文地址:https://www.cnblogs.com/dingshuanglei/p/9052332.html
Copyright © 2020-2023  润新知