Compression 谷歌如何';s页面速度无损图像压缩工作?
当你在一个网站上运行谷歌Firebug/Firefox的PageSpeed插件时,它会建议一些图像可以无损压缩的情况,并提供一个下载这个较小图像的链接 例如:Compression 谷歌如何';s页面速度无损图像压缩工作?,compression,imaging,pagespeed,google-pagespeed,Compression,Imaging,Pagespeed,Google Pagespeed,当你在一个网站上运行谷歌Firebug/Firefox的PageSpeed插件时,它会建议一些图像可以无损压缩的情况,并提供一个下载这个较小图像的链接 例如: find /path/to/jpgs/ -type f -name "*.jpg" -exec jpegoptim -m70 --strip-all {} \; 无损压缩可节省33.5KiB(减少85%) 无损压缩可节省18.5KiB(减少77%) 无损压缩可以节省262B(减少11%) 无损压缩可以节省91B(减少51%) 无损压
find /path/to/jpgs/ -type f -name "*.jpg" -exec jpegoptim -m70 --strip-all {} \;
- 无损压缩可节省33.5KiB(减少85%)
- 无损压缩可节省18.5KiB(减少77%)
- 无损压缩可以节省262B(减少11%)
- 无损压缩可以节省91B(减少51%)
- 无损压缩可以节省61B(减少5%)
- 无损压缩可以节省1.7KiB(减少10%)
- 无损压缩可以节省11B(减少1%)
所以我的问题是,他们对图像做了什么改变来减少这么多?我猜对于不同的文件类型有不同的答案。这对JPGs来说真的是无损的吗?他们怎么能打败Photoshop呢?我应该对此有点怀疑吗?看看其中描述了一些技术/工具。这是一个用编码器的CPU时间换取压缩效率的问题。压缩是对较短表示的搜索,如果搜索得更努力,就会找到较短的表示 还有一个问题是要充分利用图像格式功能,例如PNG8+a而不是PNG24+a,JPEG格式的优化哈夫曼表等 Photoshop在为网络保存图像时并没有真正努力做到这一点,所以任何工具都能打败它也就不足为奇了 看
- (无损)和
- (有损)用于较小的PNG文件()和
- /(有损)用于更好的JPEG压缩程序
对于PNG文件,他们使用OptiPNG,并采用一些尝试和错误的方法
//我们使用这四种组合,因为不同的图像似乎从中受益
//不同的参数以及这4个参数的组合似乎最适用于大型
//来自web的一组PNG。
常量PngCompressParams kPngCompressionParams[]={
PngCompressParams(PNG_所有过滤器,Z_默认策略),
PngCompressParams(PNG_所有过滤器,Z_过滤器),
PngCompressParams(PNG_过滤器_无,Z_默认_策略),
PngCompressParams(PNG_FILTER_NONE,Z_FILTER)
};
当应用所有四种组合时,将保持最小的结果。就这么简单
(注意:如果您通过-o7
提供-o2
,则optipng
命令行工具也会这样做)
对于JPEG文件,它们与以下选项一起使用:
jpeg压缩选项()
:渐进式(假)、保留颜色(假),
保留exif数据(错误),有损(错误){
类似地,使用以下选项压缩WEBP:
WebpConfiguration()
:无损(真)、质量(100)、方法(3)、目标尺寸(0),
alpha_压缩(0)、alpha_滤波(1)、alpha_质量(100){
还有一种用于无损转换为最小格式的格式。在Windows中复制PageSpeed的JPG压缩结果: 使用Windows版本的jpegtran,我能够获得与PageSpeed完全相同的压缩结果,您可以在。我使用DOS提示符运行可执行文件(使用Start>CMD)。为了获得与PageSpeed压缩完全相同的文件大小(低至字节),我指定了Huffman优化,如下所示:
jpegtran -optimize source_filename.jpg output_filename.jpg
有关压缩选项的更多帮助,请在命令提示下键入:jpegtran
或使用Firebug中PageSpeed选项卡自动生成的图像:
我能够按照彭彭80的建议访问PageSpeed的优化文件。希望屏幕截图能为FireFox环境提供更清晰的信息。(但我无法在Chrome中访问这些优化文件的本地版本。)
要使用Adobe Bridge和正则表达式清理混乱的PageSpeed文件名:
虽然FireFox中的PageSpeed能够为我生成优化的图像文件,但它也改变了它们的名称,将简单的名称改为:
nice_picture.jpg
进入
我发现这似乎是一种常见的抱怨。因为我不想手动重命名所有图片,所以我使用了AdobeBridge的重命名工具和正则表达式。您可以使用其他接受正则表达式的重命名命令/工具,但我怀疑AdobeBridge对于处理PageSpeed问题的大多数人来说都是现成的
find /path/to/jpgs/ -type f -name "*.jpg" -exec jpegoptim --strip-all {} \;
find /path/to/jpgs/ -type f -name "*.jpg" -exec jpegoptim -m70 --strip-all {} \;
find /path/to/pngs/ -type f -name "*.png" -exec optipng -o2 {} \;
sudo apt-get install trimage
trimage -d images/*
<?php
echo "Processing jpegs<br />";
exec("find /home/example/public_html/images/ -type f -name '*.jpg' -exec jpegoptim --strip-all {} \;");
echo "Processing pngs<br />";
exec("find /home/example/public_html/images/ -type f -name '*.png' -exec optipng -o7 {} \;");
?>
FOR /F "tokens=*" %G IN ('dir /s /b *.png') DO optipng -nc -nb -o7 -full %G