博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图片质量压缩
阅读量:6946 次
发布时间:2019-06-27

本文共 2202 字,大约阅读时间需要 7 分钟。

之前一直做web项目,对图片的处理一般仅限于做缩略图,裁切,水印等,最近在给APP写API,里边有使用图片的功能,但是APP开发的同事抱怨说图片太大,加载太慢

首先,检查原图大小,一看3M多,做缩略图,做完还是有1M多,怎么办?

网上搜质量压缩的方法,功夫不负苦心人啊,还真被我搜到了

不多说,贴代码做记录

///         /// 图片质量压缩        ///         /// 图片流        /// 压缩比例 1-100         /// 
public static Stream GetPicThumbnail(Stream stream, int flag) { var newStream = new MemoryStream(); System.Drawing.Image iSource = System.Drawing.Image.FromStream(stream); ImageFormat tFormat = iSource.RawFormat; //以下代码为保存图片时,设置压缩质量 EncoderParameters ep = new EncoderParameters(); long[] qy = new long[1]; qy[0] = flag;//设置压缩的比例1-100 EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy); ep.Param[0] = eParam; try { ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo jpegICIinfo = null; for (int x = 0; x < arrayICI.Length; x++) { if (arrayICI[x].FormatDescription.Equals("JPEG")) { jpegICIinfo = arrayICI[x]; break; } } if (jpegICIinfo != null) { iSource.Save(newStream, jpegICIinfo, ep);//dFile是压缩后的新路径 } else { iSource.Save(newStream, tFormat); } } catch (Exception ex) { } finally { iSource.Dispose(); iSource.Dispose(); } return newStream; }
质量压缩
///         /// 压缩比例        ///         ///         ///         /// 
public static int GetFlag(long length, int refSize) { var size = (int)length / 1024; var flag = 100; if (size > refSize) { flag = refSize * 100 / size; if (flag < 20) flag = 20; } return flag; }
压缩比例

压缩完成之后,再看图片大小,80K,好了,可以了,收工

转载于:https://www.cnblogs.com/lwein/p/4664894.html

你可能感兴趣的文章
python 基础 10.0 nosql 简介--redis 连接池及管道
查看>>
【SP1811】 LCS - Longest Common Substring(SAM)
查看>>
Backup: Array in Perl6
查看>>
ansible常用模块
查看>>
【C++】typeinfo.h
查看>>
Asp.net使用powershell管理hyper-v
查看>>
ASP.NET(C#)图片加文字、图片水印(转)
查看>>
python 爬虫
查看>>
连接ssh反应很慢,卡,延迟
查看>>
rabbitmq基本操作
查看>>
疑问????
查看>>
Leetcode 515. Find Largest Value in Each Tree Row
查看>>
WINCE 下载地址(转)
查看>>
日期操作积累
查看>>
Linux 僵尸进程的筛选和查杀
查看>>
WP7基础学习---第十五讲
查看>>
mysql linux app
查看>>
DotNetCore学习-3.管道中间件
查看>>
Python基础11_函数名运用,闭包,迭代器
查看>>
java集合框架
查看>>