1
我试图计算图像的最佳压缩质量小于150kB。但Imagick让我感到恶心......imagick - 逐渐降低的压缩质量
这里是我的代码:
<?php
// {...}
// $white is my image
// self::THUMBNAIL_SIZE_KO is 150
$quality = 100;
$white->setImageFormat('jpg');
$white->setImageCompression(Imagick::COMPRESSION_JPEG);
$white->setCompressionQuality($quality);
$data = $white->getImageBlob();
var_dump(strlen($data));
while(strlen($data) > self::THUMBNAIL_SIZE_KO * 1024 && $quality > 0){
$quality--;
$white->setCompressionQuality($quality);
$data = $white->getImageBlob();
var_dump($quality);
var_dump(strlen($data));
}
$this->_canvas = $white;
我做var_dumps的渲染图像的字节大小来控制。 但它alaways大小相同:
// var_dump rendered :
int 167963
int 99
int 167963
int 98
int 167963
int 97
int 167963
int 96
int 167963
int 95
int 167963
int 94
int 167963
int 93
int 167963
// etc.
你知道为什么Imagick有很奇怪的行为,或者有什么错我的代码?
谢谢! :)
除了使用正确的功能,你可以使用一个“分裂”的方式来获得相应的压缩质量不仅仅是一个“阶梯”的方法更快:http://stackoverflow.com/a/19639344/778719 – Danack
好主意,我会做到这一点!谢谢 ! – Thaledric