图片无损压缩 图片无损等比例缩放
突然接受到一个需求,要将客户的一部分高质量图压缩并且等比例缩放到800px。
尝试很多,遇到两个问题:
1.图片压缩了,14MB大概还有50KB左右,质量差的很,和原图很不一样。
2.图片等比例缩放了,但是14MB做下来还有1MB
于是就有了以下的方法(图片无损压缩和无损等比例缩放),效果和明显,14MB在压缩质量为80%并且等比例缩放之后,只有100KB左右。
最下方会开放源码免费下载。
当然,方法也是从老前辈那里拿来的:
/// <summary>/// 图片无损压缩 无损等比例缩放./// </summary>/// <param name="sFile">The s file.</param>/// <param name="dFile">The d file.</param>/// <param name="dHeight">Height of the d.</param>/// <param name="dWidth">Width of the d.</param>/// <param name="flag">The flag.</param>/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>public static bool GetPicThumbnail(string sFile, string dFile, int dHeight, int dWidth, int flag){System.Drawing.Image iSource = System.Drawing.Image.FromFile(sFile);ImageFormat tFormat = iSource.RawFormat;int sW = 0, sH = 0;//按比例缩放Size tem_size = new Size(iSource.Width, iSource.Height);if (tem_size.Width > dHeight || tem_size.Width > dWidth) //将**改成c#中的或者操作符号{if ((tem_size.Width * dHeight) > (tem_size.Height * dWidth)){sW = dWidth;sH = (dWidth * tem_size.Height) / tem_size.Width;}else{sH = dHeight;sW = (tem_size.Width * dHeight) / tem_size.Height;}}else{sW = tem_size.Width;sH = tem_size.Height;}Bitmap ob = new Bitmap(dWidth, dHeight);Graphics g = Graphics.FromImage(ob);g.Clear(Color.WhiteSmoke);g.CompositingQuality = CompositingQuality.HighQuality;g.SmoothingMode = SmoothingMode.HighQuality;g.InterpolationMode = InterpolationMode.HighQualityBicubic;g.DrawImage(iSource, new Rectangle((dWidth - sW) / 2, (dHeight - sH) / 2, sW, sH), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel);g.Dispose();//以下代码为保存图片时,设置压缩质量EncoderParameters ep = new EncoderParameters();long[] qy = new long[1];qy[0] = flag;//设置压缩的比例1-100EncoderParameter 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){ob.Save(dFile, jpegICIinfo, ep);//dFile是压缩后的新路径}else{ob.Save(dFile, tFormat);}return true;}catch{return false;}finally{iSource.Dispose();ob.Dispose();}}
东西很实用!分享给大家
源代码下载地址:图片无损压缩,等比例缩放
说明一下,源码大家放心下载就可以了,开发语言是C#。有人恶意评分导致资源只有1颗星,请见谅
图片无损压缩 图片无损等比例缩放相关推荐
- iOS 图片处理方法(按比例缩放,指定宽度按比例缩放)
今天遇见的处理图片的问题,一张图片上下两个部分都有一个空白区域,就中间是图片.要求是不能让他显示上下 有空白问间距.这是测试提出来的问题,但是图片本身就是这个毛病.无奈,哥哥改.谁有好的方法推荐 ...
- 【uniapp 图片展示自适应,等比例缩放】
uniapp 图片自适应,等比例缩放 在uniapp页面展示中会遇到图片展示问题,等比缩放或者自适应view大小. 只固定调整图片的宽度(或者高度)而图片的高度(或者宽度)可以自动根据图片原始比例调节 ...
- ASP.NET将原始图片按照指定尺寸等比例缩放显示图片
网站上可能会有很多图片,比如产品图片等,而且他们可能大小不一,宽度和高度也不一定一样,有的很大有的很小.如果放在一张网页上,可能会破坏版面,但是如果强制让他们按照指定的宽度和高度显示,因为比例不同还会 ...
- pyqt5 图片随窗口变化等比例缩放
把图片的路径改成你自己的 import sys from PyQt5.QtWidgets import QMainWindow,QApplication,QWidget,QHBoxLayout,QLa ...
- img图片不失真,进行比例缩放
img{object-fit: fill; object-fit: contain;object-fit: scale-down;}
- php实现等比例缩放图片
封装函数 function thrum($src_file,$des_w,$des_h){ //封装一个图片处理函数(等比例缩放) // 传入的第一个参数为图片的地址,第二和第三个元素为目的图片的宽高 ...
- css 网页整体缩小,css等比例缩放
css 可以按比例缩放图片吗? 不用 js 代码实现图片比例缩放,就是不超出DIV设定的高宽显示等比例图片 解决这个问题的方法如下: 先在html里添加一个img图片标签. 运行页面后,这是完整显示图 ...
- html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)
使用max-width,max-height:或者min-width,min-height的css属性即可.如: 代码如下 img{max-width:100px;max-height:100px;} ...
- Tensorflow 读取XML文件内容并对图片等比例缩放
根据XML文件中对图片标记的信息读取,并显示在图片中. xml 文件内容: <annotation><folder>OXIIIT</folder><filen ...
最新文章
- Discuz DB层跨库映射关系表名前缀BUG修复后产生的新bug
- Vue.js Prop
- 模拟点击与鼠标点击区别_没有root权限也可以用adb玩机2——模拟按键点击脚本...
- tp5 日期范围查询_VB实战应用 | 如何巧妙解决日期范围查询问题
- 每日一题(2)—— -2与2的比较
- Linux高级编程实验(30个)
- Python标准库-string模块《未完待续》
- 从Android界面开发谈起
- 关闭多个activity
- jsp水果商城系统毕业设计网站成品论文
- nrm —— 快速切换 NPM 源
- Java给树加子节点个数统计
- php出库单编号怎么编,求大神帮忙写VBA,出库单自动保存到明细,自动编号
- spss分析方法-因子分析(转载)
- JAVA计算机毕业设计无人智慧药柜系统设计(附源码、数据库)
- c语言 约分最简分式
- 解释程序和编译程序的区别
- 长沙理工大学计算机与通信工程学院院长,徐蔚鸿教授
- 按照计算机系统结构分类存储器可分为,按照计算机系统结构分类,存储器可分为...
- Ubuntu22.04 VMWare Kernel Module Updater 失败
热门文章
- (非常重要).Net Core应用框架Util介绍(学习Util)
- 数据库(笔记)——候选码、主码、外码以及关系的完整性
- poi excel 导出设置边框,自定义背景色,自定义字体
- 【java基础面试题】
- 为什么需要开发X 波段带通滤波器
- 5-2 学习打卡(11.7)
- 武汉大学 计算机学院 许传奇,许永超 - 教师简历 CV- 武汉大学计算机学院
- 域格4G模块TTS语音使用方法
- 相较国外代码托管平台 gitlab,咱们中国自己的代码托管平台有哪些优势?
- php博客系统答辩ppt,个人博客系统设计与实现答辩PPT.ppt