图片质量压缩

今天图片上传的时候,一张图片宽高有4000*7000左右(只有1.3M左右),然后按照以前的方法,生成了100多兆的图

然后,问题就来了

找了老半天,虽然刚开始也有百度到    EncoderParameter p类似这个的,但是那时候没注意,总觉得不是所需要的,感觉是其他保存形式

后来实在是没找到什么解决办法,就干脆拿来试一试

    EncoderParameter p;
                EncoderParameters ps;
                ps = new EncoderParameters(1);
                long[] qualityArray = new long[1];
                qualityArray[0] = request.Quality;
                p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qualityArray);
                ps.Param[0] = p;

                image.Save(path, ImageUtil.GetCodecInfo("image/jpeg"), ps);
 public static ImageCodecInfo GetCodecInfo(string mimeType)
        {
            ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
            foreach (ImageCodecInfo ici in CodecInfo)
            {
                if (ici.MimeType == mimeType)
                {
                    return ici;
                }
            }
            return null;
        }

开始直接拿了网上的,结果总是不对,要不参数错误,要不就提示null

总不得其然

问了问同事,拿了以前项目的代码才发现是

 long[] qualityArray = new long[1];
                qualityArray[0] = request.Quality;

 这个参数拿的是long[]数据,当然有重载,long直接一个值的好像也是有的,没试。

设置后,图片的大小就变得超级小了。

即使设置了100的压缩质量,也是比原图小的,至于这个设置就不是特别清楚了。

总的来说,解决了问题,就不用这么头疼了。

原文地址:https://www.cnblogs.com/danlis/p/5845907.html