Imagick和jpeg图像压缩 - 没有变化?

时间:2017-08-10 18:31:17

标签: php imagick

因此,我正在使用Imagick PHP库测试我们的一些图像,以查看我们想要使用的压缩。但无论我做什么,似乎都没有对输出文件进行任何更改。这是我的基本过程:

$original_image = new \Imagick( $image_url );

foreach ( ['original', '92', '80', '60', '40'] as $compression_size )
{
    $tester = clone $original_image;

    // don't compress the original
    if ( 'original' != $compression_size )
    {
        $tester->setImageCompression(Imagick::COMPRESSION_JPEG);
        $tester->setCompressionQuality( (int) $compression_size);
    }
    $filename: <original base> . "-$compression_size.jpg";

    file_put_contents($filename, $tester->getImageBlob() );

    $tester = null;
}

结果显示,各种按压之间的文件大小不会改变,并且在视觉上,原始和甚至压缩= 40版本之间没有差异。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

来自文档(http://php.net/manual/en/imagick.setcompressionquality.php):

  

此方法仅适用于新图片,例如那些通过Imagick :: newPseudoImage创建的。对于现有图像,您应该使用Imagick :: setImageCompressionQuality()。

所以,替换

    $tester->setCompressionQuality( (int) $compression_size);

    $tester->setImageCompressionQuality( (int) $compression_size);