近期项目有个需求,将上传的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. TextView实现跑马灯效果
  2. 京东运营插件_技术中台产品经理必知的那些易混词儿(1):组件、套件、 中间件、插件……...
  3. php 根据权重随机数,PHP根据概率产生随机数
  4. 为什么“不在乎别人的眼光”是个大谎言?
  5. 手把手教你薅羊毛,1 元体验业内领先AI技术!
  6. python opencv实现目标区域裁剪
  7. Couchbase概述
  8. layui多级联动下拉框的实现_简单三级联动的实现
  9. Java SE 9:使用Eclipse和IntelliJ IDEA IDE开发和测试HelloWorld模块(第4部分)
  10. 机器人方队解说词_创想机器人博物馆配音解说词
  11. 循环冗余校验码CRC
  12. 计算机网络提供信息传输服务,【判断题】计算机网络通常被划分为通信子网和资源子网,通信子网提供信息传输服务,资源子网提供共享资源。...
  13. could not extract ResultSet
  14. python续行_python的续行
  15. kafka消费模型,分区,偏移量等
  16. PHP解码JavaScript中的escape()方法
  17. 复合效应 达伦哈迪_哈迪·哈里里(Hadi Hariri):“我们需要研究新事物”
  18. 熊猫互娱破产清算,王健林又给王思聪成立新公司了?
  19. html+CSS让背景图片充满整个屏幕
  20. Linux FQ队列操作

热门文章

  1. 云米涉嫌专利侵权是小米生态链的整体隐患
  2. 《新文学》风吹过,雨无痕
  3. 境内区块链信息服务备案清单(第一批)
  4. OpenVINO™手写字符识别模型与使用
  5. 【模拟 简易银行系统~python】
  6. 福州大学计算机网络技术实验室,实验室提升福州大学网络实践教学能力
  7. 为什么投资拉勾的是前程无忧?
  8. Silverlight是什么
  9. filter 拦截器 获取http请求参数
  10. 释放C盘 清理垃圾的两个命令 (仅记录)