近期项目有个需求,将上传的png图片做压缩处理,节省空间及提升网站性能,刚开始的时候了解过imagemagick,但imagemagick在png图片压缩方面感觉不尽人意,有时候压缩后比压缩前还要大,所以需要寻求其它方案解决png压缩的问题。

经过了解,找到了tinypng,在上面测试了下,png的压缩的确能够达到很好的效果,大小能够减少70%左右而且并不失真,本想着终于找到解决的方法了,但再经过了解得知,tinypng需要收费,不收费每天500张上限,而且调用它的api做压缩处理,如此一来,不想花钱又想完成任务恐怕是不可能了,而且调用第三方api总要连接人家服务器做处理,性能肯定不行。

抱着再找找的态度,竟然找到了pngquant,pngquant是开源的png压缩工具,可以直接安装到linux服务器上面,而且官方上面还声明它与tinypng有千丝万缕的关系,测试过后感觉很不错,那就用它了。

首先就要到官网去下载:

[root@bush src]# wget http://pngquant.org/pngquant-2.9.0-src.tar.gz

到目前为止,这个包是最新的,想要了解更多请到官网:http://pngquant.org

下载回来后解压:

[root@bush src]# tar -zxvf pngquant-2.9.0-src.tar.gz

进入解压后的文件夹,并设置安装路径进行安装:

[root@bush pngquant-2.9.0]# ./configure --prefix=/usr/local
... ...
[root@bush pngquant-2.9.0]# make install
... ...
[root@bush pngquant-2.9.0]# make clean
... ...

安装成功后就可以直接在php里面使用了,官方有php开发文档,下面是针对我自己项目的一个方法:

/**---------------------------------------------------------------------* @param $path_to_png_file* @param int $max_quality* @return bool|int|void*/
public function pngquant_compress($path_to_png_file, $max_quality = 90){if (!file_exists($path_to_png_file)) {$this->set_error("File does not exist: ".$path_to_png_file);return false;}// guarantee that quality won't be worse than that.$min_quality = 80;// '-' makes it use stdout, required to save to $compressed_png_content variable// '<' makes it read from the given file path// escapeshellarg() makes this safe to use with any path$compressed_png_content = shell_exec($this->lib_png_compress." --quality=$min_quality-$max_quality - < ".escapeshellarg($path_to_png_file));if (!$compressed_png_content) {$this->set_error('Conversion to compressed PNG failed. Is pngquant 1.8+ installed on the server?');return false;}return @file_put_contents($path_to_png_file, $compressed_png_content);
}

针对上面的思路做相应的程序封装,就可以运用到项目当中,图片的处理依然保留imagemagick的处理或者gd2。除了png,需要时都使用imagemagick压缩,png则单独使用pngquant处理。

png图片压缩工具pngquant相关推荐

  1. 开发一款图片压缩工具:使用 pngquant 实现图片压缩

    活动地址:CSDN21天学习挑战赛 开发一款图片压缩工具(二):使用 pngquant 实现图片压缩 上一篇我尝试使用了 pillow 库对 png 图片进行了压缩,效果不好.这次我换用 pngqua ...

  2. python Png图片压缩工具

    引言 最近在做 H5 小游戏的开发,与 App 不同,由于 H5 所有的资源都是通过 CDN 获取的,考虑到网络资源加载速度的问题,优化资源显得格外重要.因此,图片资源的压缩也是必不可少的. 起源 起 ...

  3. C#制作图片压缩工具

    最近做的项目当中,需要将视频采集卡采集过来的图片进行压缩处理,原有一张JPG默认320*240大小为300KB,经过压缩之后为6KB,压缩50倍! 先放上截图吧: 可以添加单个文件,支持多选,也可以添 ...

  4. TinyPng:在线PNG图片压缩工具

    本资源由 伯乐在线 - 卢伟 整理 TinyPng:在线PNG图片压缩工具是一款可以帮助网页设计师们优化图片的工具,只需要简单的两步就可以完成对PNG图片的高压缩而且还不会影响PNG图片的质量,这样就 ...

  5. 在线PNG图片压缩工具推荐——TinyPng

    日常开发工作中时常需要对PNG图片压缩,今天推荐大家一个在线的图片压缩工具,ThinyPng 在线地址:TinyPNG – Compress WebP, PNG and JPEG images int ...

  6. 怎么直接压缩图片?好用的图片压缩工具推荐

    在我们现在的工作生活当中,图片已经变得无处不在了,但由于现在的拍摄设备像素越来越高,因此图片也变得越来越大,因此在使用一些高清图片的时候经常会遇到图片太大无法上传或者图片太大传输太慢的情况.因此,图片 ...

  7. java图片压缩工具类

    java图片压缩工具类 PicCompressUtil.java import java.io.ByteArrayInputStream; import java.io.ByteArrayOutput ...

  8. android图片压缩工具类

    好久没写博客了,一方面是因为最近找了家实习单位,很累基本上下班后就没有打不起精神去学习,另一方面我自己觉得写博客确实有点耗时间,趁着周六周日想花点时间研究下fresco,picass,Glide等框架 ...

  9. optipng图片压缩工具

    为了减少首屏响应时间,我们不得不使用各种方法,各种压缩工具.下面,我说一下Google推荐的一款png格式的图片压缩工具. 首先先去官网下载软件点击进入官网,记得注意自己要下载的版本哦,下载完后并不需 ...

最新文章

  1. Java培训深度学习都要学什么
  2. DOM渲染的详细过程
  3. pytorch 加载模型:
  4. java 存入对象io_Java面向对象 IO (一)
  5. extjs学习(关于grid)
  6. IOS基础之仿酷狗音乐第1天
  7. TortoiseSVN与VisualSVN Server搭建SVN版本控制系统【转】
  8. Can't process attribute android:fillColor=@color/gray,添加vector属性报错解决方法
  9. 树状结构搜索功能_ICLR 2020 高分论文!利用稀疏多层次Transformer结构获取语法树!...
  10. 如何使用Aiseesoft Mac FoneTrans传输和管理iOS文件
  11. 图像空域增强:直方图方法
  12. 如何使用smobiler的listview控件实现个人信息修改
  13. kindle使用参考
  14. Windows10清理C盘
  15. Hexo/Github.io 配置腾讯云CDN
  16. zen-cart修改 zencart 模板修改
  17. 获取自己win10系统的产品密匙
  18. Elasticearch Filter Query 过滤查询--(五)
  19. nginx的location,upstream,rewrite 和 proxy_pass使用,以及需要注意的地方
  20. 黑群晖二合一安装不了套件_玩PT还是得安装transmission,星际蜗牛安装黑群晖制作家用NAS...

热门文章

  1. 百度Apollo自动驾驶学习笔记
  2. 颈椎病及腰椎间盘突出病因病理(程序员)
  3. 2021.2.23课程摘要(逻辑教育-王劲胜)
  4. PLSQL 解析XML示例2
  5. 归一法的计算方法讲解_数学归一法是什么能举个具体例子吗
  6. 蓝桥训练赛 (14点--18点 19点--21点20)
  7. java 数组内元素相乘,java数组元素如何进行加减乘除,请大侠咪赐教!!
  8. 为什么你裹成粽子还冷得瑟瑟发抖,别人在雪山徒步却轻装上阵,全因这件黑科技上装!...
  9. 俞敏洪:《中国合伙人》
  10. linux shell 获取当月第一天与最后一天,扣丁学堂Linux培训简述在shell脚本中获取上个月最后一天的日期方法...