因此,我正在使用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版本之间没有差异。我在这里做错了什么?
答案 0 :(得分:2)
来自文档(http://php.net/manual/en/imagick.setcompressionquality.php):
此方法仅适用于新图片,例如那些通过Imagick :: newPseudoImage创建的。对于现有图像,您应该使用Imagick :: setImageCompressionQuality()。
所以,替换
$tester->setCompressionQuality( (int) $compression_size);
的
$tester->setImageCompressionQuality( (int) $compression_size);