谷歌PageSpeed和ImageMagick JPG压缩

Sta*_*bie 14 compression jpeg imagemagick image-processing pagespeed

鉴于用户上传的图像,我需要创建它的各种缩略图,以便在网站上显示.我正在使用ImageMagick并试图让Google PageSpeed感到高兴.不幸的是,无论quality我在convert命令中指定了什么值,PageSpeed仍然能够建议进一步压缩图像.

请注意http://www.imagemagick.org/script/command-line-options.php?ImageMagick=2khj9jcl1gd12mmiu4lbo9p365#quality提到:

对于JPEG ...图像格式,质量为1 [提供]最低图像质量和最高压缩....

我实际上甚至测试过使用1来压缩图像(虽然它产生了无法使用的图像),而PageSpeed仍然建议我仍然可以通过"无损压缩"图像来优化这种图像.我不知道如何使用ImageMagick压缩图像.有什么建议?

这是测试我所说的内容的快速方法:

assert_options(ASSERT_BAIL, TRUE);

// TODO: specify valid image here
$input_filename = 'Dock.jpg';

assert(file_exists($input_filename));

$qualities = array('100', '75', '50', '25', '1');
$geometries = array('100x100', '250x250', '400x400');

foreach($qualities as $quality)
{
    echo("<h1>$quality</h1>");
    foreach ($geometries as $geometry)
    {
        $output_filename = "$geometry-$quality.jpg";

        $command = "convert -units PixelsPerInch -density 72x72 -quality $quality -resize $geometry $input_filename $output_filename";
        $output  = array();
        $return  = 0;
        exec($command, $output, $return);

        echo('<img src="' . $output_filename . '" />');

        assert(file_exists($output_filename));
        assert($output === array());
        assert($return === 0);
    }

    echo ('<br/>');
}
Run Code Online (Sandbox Code Playgroud)

Sjo*_*erd 9

  • JPEG可以包含可以删除的注释,缩略图或元数据.
  • 有时可以更多地压缩JPEG文件,同时保持相同的质量.如果生成图像的程序没有使用最佳算法或参数来压缩图像,则这是可能的.通过重新压缩相同的数据,优化器可以减小图像大小.这通过使用特定的霍夫曼表进行压缩来实现.

您可以在创建的文件上运行jpegtranjpegoptim,以进一步减小它的大小.

  • 每个JPEG都使用霍夫曼表.Imagemagick可能总是使用相同的Huffman表,而jpegoptim试图找到最好的自定义Huffman表. (3认同)