突然接受到一个需求,要将客户的一部分高质量图压缩并且等比例缩放到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颗星,请见谅

图片无损压缩 图片无损等比例缩放相关推荐

  1. iOS 图片处理方法(按比例缩放,指定宽度按比例缩放)

    今天遇见的处理图片的问题,一张图片上下两个部分都有一个空白区域,就中间是图片.要求是不能让他显示上下    有空白问间距.这是测试提出来的问题,但是图片本身就是这个毛病.无奈,哥哥改.谁有好的方法推荐 ...

  2. 【uniapp 图片展示自适应,等比例缩放】

    uniapp 图片自适应,等比例缩放 在uniapp页面展示中会遇到图片展示问题,等比缩放或者自适应view大小. 只固定调整图片的宽度(或者高度)而图片的高度(或者宽度)可以自动根据图片原始比例调节 ...

  3. ASP.NET将原始图片按照指定尺寸等比例缩放显示图片

    网站上可能会有很多图片,比如产品图片等,而且他们可能大小不一,宽度和高度也不一定一样,有的很大有的很小.如果放在一张网页上,可能会破坏版面,但是如果强制让他们按照指定的宽度和高度显示,因为比例不同还会 ...

  4. pyqt5 图片随窗口变化等比例缩放

    把图片的路径改成你自己的 import sys from PyQt5.QtWidgets import QMainWindow,QApplication,QWidget,QHBoxLayout,QLa ...

  5. img图片不失真,进行比例缩放

    img{object-fit: fill; object-fit: contain;object-fit: scale-down;}

  6. php实现等比例缩放图片

    封装函数 function thrum($src_file,$des_w,$des_h){ //封装一个图片处理函数(等比例缩放) // 传入的第一个参数为图片的地址,第二和第三个元素为目的图片的宽高 ...

  7. css 网页整体缩小,css等比例缩放

    css 可以按比例缩放图片吗? 不用 js 代码实现图片比例缩放,就是不超出DIV设定的高宽显示等比例图片 解决这个问题的方法如下: 先在html里添加一个img图片标签. 运行页面后,这是完整显示图 ...

  8. html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)

    使用max-width,max-height:或者min-width,min-height的css属性即可.如: 代码如下 img{max-width:100px;max-height:100px;} ...

  9. Tensorflow 读取XML文件内容并对图片等比例缩放

    根据XML文件中对图片标记的信息读取,并显示在图片中. xml 文件内容: <annotation><folder>OXIIIT</folder><filen ...

最新文章

  1. Discuz DB层跨库映射关系表名前缀BUG修复后产生的新bug
  2. Vue.js Prop
  3. 模拟点击与鼠标点击区别_没有root权限也可以用adb玩机2——模拟按键点击脚本...
  4. tp5 日期范围查询_VB实战应用 | 如何巧妙解决日期范围查询问题
  5. 每日一题(2)—— -2与2的比较
  6. Linux高级编程实验(30个)
  7. Python标准库-string模块《未完待续》
  8. 从Android界面开发谈起
  9. 关闭多个activity
  10. jsp水果商城系统毕业设计网站成品论文
  11. nrm —— 快速切换 NPM 源
  12. Java给树加子节点个数统计
  13. php出库单编号怎么编,求大神帮忙写VBA,出库单自动保存到明细,自动编号
  14. spss分析方法-因子分析(转载)
  15. JAVA计算机毕业设计无人智慧药柜系统设计(附源码、数据库)
  16. c语言 约分最简分式
  17. 解释程序和编译程序的区别
  18. 长沙理工大学计算机与通信工程学院院长,徐蔚鸿教授
  19. 按照计算机系统结构分类存储器可分为,按照计算机系统结构分类,存储器可分为...
  20. Ubuntu22.04 VMWare Kernel Module Updater 失败

热门文章

  1. (非常重要).Net Core应用框架Util介绍(学习Util)
  2. 数据库(笔记)——候选码、主码、外码以及关系的完整性
  3. poi excel 导出设置边框,自定义背景色,自定义字体
  4. 【java基础面试题】
  5. 为什么需要开发X 波段带通滤波器
  6. 5-2 学习打卡(11.7)
  7. 武汉大学 计算机学院 许传奇,许永超 - 教师简历 CV- 武汉大学计算机学院
  8. 域格4G模块TTS语音使用方法
  9. 相较国外代码托管平台 gitlab,咱们中国自己的代码托管平台有哪些优势?
  10. php博客系统答辩ppt,个人博客系统设计与实现答辩PPT.ppt