图片质量压缩

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

然后,问题就来了

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

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

1
2
3
4
5
6
7
8
9
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);

 

1
2
3
4
5
6
7
8
9
10
11
12
public static ImageCodecInfo GetCodecInfo(string mimeType)
       {
           ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
           foreach (ImageCodecInfo ici in CodecInfo)
           {
               if (ici.MimeType == mimeType)
               {
                   return ici;
               }
           }
           return null;
       }

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

总不得其然

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

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

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

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

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

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

posted @   Danlis  阅读(458)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示