当前位置: 首页 > 收藏夹 > 利用 OptiPNG、jpegoptim 对图片进行无损压缩

利用 OptiPNG、jpegoptim 对图片进行无损压缩

发布于:2017-6-22 最后更新: 收藏夹 2条评论 4,940 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

前言

网站中图片一直是储存和流量大户,在搬家的时候最能感受的出来了,一下子几百G的图片库真正人都傻掉。但还好现在还有图片压缩技术可以抢救一下,说不定一下子就是压缩除了十几个 G呢!

把图片库脱下来一张一张压缩那太傻了。在 Linux 系统下,我们完全可以做到开个命令喝杯咖啡就坐享其成了。

介绍

OptiPNG 是一个能无损压缩 PNG 的工具,也可以将非 PNG 的档案(BMP, GIF, PNM and TIFF) 转换成压缩过后的PNG。

jpegoptim 是一个用来优化 JPEG 文件的工具,提供无损的优化(基于哈夫曼表),同时也可设置质量因子实现的有损优化。

安装

RHEL、CentOS

yum install optipng jpegoptim

Debian、Ubuntu

apt-get install optipng jpegoptim

MAC

brew install optipng jpegoptim

使用

假设,我们的网站所在物理路径是:/home/mf8/mf8.biz/public_html

进入网站目录cd /home/mf8/mf8.biz/public_html 压缩 PNG

find . -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve

之后,所有的目录下,包括子目录中的所有 png 文件都会被压缩,但是因为这货会参考多种方案后选择最佳方案来压缩,所以耗时贼 TM 长。100M 的图片我压缩花了两个小时。

压缩 JPG

find . -iname '*.jpg' -print0 | xargs -0 jpegoptim --strip-all --preserve --totals --all-progressive

同样压缩所有 jpg 文件,但是速度会快很多。加入 –max=90 参数可以自定义有损压缩的大小,例如这里就是提供 90% 的有损压缩,来提高压缩效率。

进阶

10 2 * * * echo `date` >> /root/optipng.log && find /var/www/ -mtime -2 -iname '*.png' -print0 | xargs -0 optipng -o7 -log /root/optipng.log -preserve && echo `date` >> /root/jpegoptim.log && find /var/www/ -mtime -2 -iname '*.jpg' -print0 | xargs -0 jpegoptim --max=90 --preserve --totals --all-progressive >> /root/jpegoptim.log

输入这个,我们就会在凌晨两点对 /var/www 下的所有 png 和 jpg 文件,并在 /root 目录下生成目录。

注意点!

压缩这门手艺,极其占用 CPU 资源,几乎都是 100% 资源占用的。建议在访客最少的时候进行压缩,且不要在共享内核的机器上使用本软件,你肯定会因为 CPU 占用过高而被停号的!

当然了,我们可以用 cpulimit 来限制相关压缩软件的 CPU 利用率~ 教程:https://www.mf8.biz/cpulimit-make-none-suspend/

原文来自:利用 OptiPNG、jpegoptim 对图片进行无损压缩 ,最终解释权归原作者所有,如有侵权,请联系QQ:337003006删除。


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


已有2条评论


  1. 您好,我在Mac的命令行中使用,报错:xargs: optipng: No such file or directory。想请教下是什么问题