共计 4491 个字符,预计需要花费 12 分钟才能阅读完成。
在文章《使用 TinyPNG 来优化您的网站图片》介绍过 TinyPNG 提供的压缩服务,效果非常棒。ImgURL 图床也是使用 TinyPNG 来提供图片压缩,不过 TinyPNG 有免费次数限制。于是 xiaoz 寻找了 Linux 系统下的其它图片压缩方案,希望后期能够用到。
OptiPNG
OptiPNG 是一种 PNG 优化器,可将图像文件重新压缩为更小的尺寸,而不会丢失任何信息。同时还可以压缩 .bmp
.gif
等格式,安装方法如下:
# 请先确保已经安装 epel 源,然后直接 yum 安装 | |
yum -y install optipng | |
#也可以下载源码编译安装 | |
#下载 OptiPNG 源码 | |
wget -O optipng.tar.gz http://prdownloads.sourceforge.net/optipng/optipng-0.7.7.tar.gz?download | |
#解压 | |
tar -zxvf optipng.tar.gz | |
#进入目录 | |
cd optipng-0.7.7/ | |
#编译安装 | |
./configure | |
make && make install |
如果不出意外,安装成功后可以输入 optipng -V
查看当前版本,如下截图。
直接输入命令 optipng xxx.png
来压缩一张 .png
的图片,optipng 还有更多的参数,可以输入 optipng -h
来查看帮助。
Synopsis: | |
optipng [options] files ... | |
Files: | |
Image files of type: PNG, BMP, GIF, PNM or TIFF | |
Basic options: | |
-?, -h, -help show this help | |
-o <level> optimization level (0-7) [default: 2] | |
-v run in verbose mode / show copyright and version info | |
General options: | |
-backup, -keep keep a backup of the modified files | |
-clobber overwrite existing files | |
-fix enable error recovery | |
-force enforce writing of a new output file | |
-preserve preserve file attributes if possible | |
-quiet, -silent run in quiet mode | |
-simulate run in simulation mode | |
-out <file> write output file to <file> | |
-dir <directory> write output file(s) to <directory> | |
-log <file> log messages to <file> | |
-- stop option switch parsing | |
Optimization options: | |
-f <filters> PNG delta filters (0-5) [default: 0,5] | |
-i <type> PNG interlace type (0-1) | |
-zc <levels> zlib compression levels (1-9) [default: 9] | |
-zm <levels> zlib memory levels (1-9) [default: 8] | |
-zs <strategies> zlib compression strategies (0-3) [default: 0-3] | |
-zw <size> zlib window size (256,512,1k,2k,4k,8k,16k,32k) | |
-full produce a full report on IDAT (might reduce speed) | |
-nb no bit depth reduction | |
-nc no color type reduction | |
-np no palette reduction | |
-nx no reductions | |
-nz no IDAT recoding | |
Editing options: | |
-snip cut one image out of multi-image or animation files | |
-strip <objects> strip metadata objects (e.g. "all") | |
Optimization levels: | |
-o0 <=> -o1 -nx -nz (0 or 1 trials) | |
-o1 <=> -zc9 -zm8 -zs0 -f0 (1 trial) | |
(or...) -zc9 -zm8 -zs1 -f5 (1 trial) | |
-o2 <=> -zc9 -zm8 -zs0-3 -f0,5 (8 trials) | |
-o3 <=> -zc9 -zm8-9 -zs0-3 -f0,5 (16 trials) | |
-o4 <=> -zc9 -zm8 -zs0-3 -f0-5 (24 trials) | |
-o5 <=> -zc9 -zm8-9 -zs0-3 -f0-5 (48 trials) | |
-o6 <=> -zc1-9 -zm8 -zs0-3 -f0-5 (120 trials) | |
-o7 <=> -zc1-9 -zm8-9 -zs0-3 -f0-5 (240 trials) | |
-o7 -zm1-9 <=> -zc1-9 -zm1-9 -zs0-3 -f0-5 (1080 trials) | |
Notes: | |
The combination for -o1 is chosen heuristically. | |
Exhaustive combinations such as "-o7 -zm1-9" are not generally recommended. | |
Examples: | |
optipng file.png (default speed) | |
optipng -o5 file.png (slow) | |
optipng -o7 file.png (very slow) |
OptiPNG 主页:http://optipng.sourceforge.net/
jpegoptim
jpegoptim 是一款开源的图片压缩工具,只能压缩 .jpg
格式,直接使用 yum
命令安装, 安装完毕后可以输入 jpegoptim -V
查看版本。
yum -y install jpegoptim
输入命令 jpegoptim -m 80 xxx.jpg
来压缩图片,-m
指的优化质量,可选值从 0 -100,数值越大速度越快、质量越好,但压缩效果更差,更多参数可以输入 jpegoptim -h
查看。
jpegoptim v1.4.6 Copyright (C) 1996-2018, Timo Kokkonen | |
Usage: jpegoptim [options] <filenames> | |
-d<path>, --dest=<path> | |
specify alternative destination directory for | |
optimized files (default is to overwrite originals) | |
-f, --force force optimization | |
-h, --help display this help and exit | |
-m<quality>, --max=<quality> | |
set maximum image quality factor (disables lossless | |
optimization mode, which is by default on) | |
Valid quality values: 0 - 100 | |
-n, --noaction don't really optimize files, just print results | |
-S<size>, --size=<size> | |
Try to optimize file to given size (disables lossless | |
optimization mode). Target size is specified either in | |
kilo bytes (1 - n) or as percentage (1% - 99%) | |
-T<threshold>, --threshold=<threshold> | |
keep old file if the gain is below a threshold (%) | |
-b, --csv print progress info in CSV format | |
-o, --overwrite overwrite target file even if it exists (meaningful | |
only when used with -d, --dest option) | |
-p, --preserve preserve file timestamps | |
-P, --preserve-perms | |
preserve original file permissions by overwriting it | |
-q, --quiet quiet mode | |
-t, --totals print totals after processing all files | |
-v, --verbose enable verbose mode (positively chatty) | |
-V, --version print program version | |
-s, --strip-all strip all markers from output file | |
--strip-none do not strip any markers | |
--strip-com strip Comment markers from output file | |
--strip-exif strip Exif markers from output file | |
--strip-iptc strip IPTC/Photoshop (APP13) markers from output file | |
--strip-icc strip ICC profile markers from output file | |
--strip-xmp strip XMP markers markers from output file | |
--all-normal force all output files to be non-progressive | |
--all-progressive force all output files to be progressive | |
--stdout send output to standard output (instead of a file) | |
--stdin read input from standard input (instead of a file) |
jpegoptim 项目地址:https://github.com/tjko/jpegoptim
Google webp
WebP 是一种现代图像格式,可为 Web 上的图像提供出色的无损和有损压缩。使用 WebP,网站管理员和 Web 开发人员可以创建更小,更丰富的图像,使网络更快。
CentOS 可以使用 yum
安装:
yum -y install libwebp-devel libwebp-tools
使用 cwebp 命令行上 PNG 或 JPEG 图像文件转换为 WebP 的格式。您可以使用以下命令将 PNG 图像文件转换为质量范围为 80 的 WebP 图像:
cwebp -q 80 image.png -o image.webp
更多关于 webp 的使用说明可以参考 Google 官方文档: new image format for the Web,顺带一提,国内的 又拍云 CDN 已经支持自动将图片转换为 webp 格式。
总结
无论哪种图片压缩方案都无法真正做到 100% 无损,只能尽可能不降低图片质量的情况下减小图片体积。建议大家对网站图片进行适当压缩,提高网站速度。如果您还有更优秀的压缩方案,请留言推荐。
