イメージの最高の圧縮品質を150kB未満に計算しようとしています。私が作った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:しかしImagickは私が病気になります...
は、ここに私のコードです。 しかし、それは同じサイズ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