zoukankan      html  css  js  c++  java
  • C# 如何进行图像的压缩

    从网上找的非常有效。图片3M到500k

       private static ImageCodecInfo GetEncoderInfo(String mimeType)
            {
                int j;
                ImageCodecInfo[] encoders;
                encoders = ImageCodecInfo.GetImageEncoders();
                for (j = 0; j < encoders.Length; ++j)
                {
                    if (encoders[j].MimeType == mimeType)
                        return encoders[j];
                }
                return null;
            }
    
            /// <summary>
            /// 图片压缩(降低质量以减小文件的大小)
            /// </summary>
            /// <param name="srcBitmap">传入的Bitmap对象</param>
            /// <param name="destStream">压缩后的Stream对象</param>
            /// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>
            public static void Compress(Bitmap srcBitmap, Stream destStream, long level)
            {
                ImageCodecInfo myImageCodecInfo;
                Encoder myEncoder;
                EncoderParameter myEncoderParameter;
                EncoderParameters myEncoderParameters;
    
                // Get an ImageCodecInfo object that represents the JPEG codec.
                myImageCodecInfo = GetEncoderInfo("image/jpeg");
    
                // Create an Encoder object based on the GUID
    
                // for the Quality parameter category.
                myEncoder = Encoder.Quality;
    
                // Create an EncoderParameters object.
                // An EncoderParameters object has an array of EncoderParameter
                // objects. In this case, there is only one
    
                // EncoderParameter object in the array.
                myEncoderParameters = new EncoderParameters(1);
    
                // Save the bitmap as a JPEG file with 给定的 quality level
                myEncoderParameter = new EncoderParameter(myEncoder, level);
                myEncoderParameters.Param[0] = myEncoderParameter;
                srcBitmap.Save(destStream, myImageCodecInfo, myEncoderParameters);
            }
    
            /// <summary>
            /// 图片压缩(降低质量以减小文件的大小)
            /// </summary>
            /// <param name="srcBitMap">传入的Bitmap对象</param>
            /// <param name="destFile">压缩后的图片保存路径</param>
            /// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>
            public static void Compress(Bitmap srcBitMap, string destFile, long level)
            {
                Stream s = new FileStream(destFile, FileMode.Create);
                Compress(srcBitMap, s, level);
                s.Close();
            }
  • 相关阅读:
    Protobuf
    CPU profiling
    转 Unicode 和 UTF-8 的区别
    Redis数据结构底层知识总结
    MySQL 加锁处理分析 ---非常牛逼
    MySQL Gap Lock问题
    利用Linux文件系统内存cache来提高性能
    Xcode7安装CocoaPods
    字符串排列组合算法
    iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/8719676.html
Copyright © 2011-2022 走看看