Imagemagick Специальные веб-вызовы в переполнении стека

Мне удалось установить поддержку webp для imagemagick. Но мне не хватает некоторых точных команд.
Основные покрыты через:

$im = new Imagick();
$im->pingImage($src);
$im->readImage($src);
$im->resizeImage($width,$height,Imagick::FILTER_CATROM , 1,TRUE );
$im->setImageFormat( "webp" );
$im->writeImage($dest);

Но я упускаю множество параметров тонкой настройки, как описано в документации по командной строке imageMagick здесь:
http://www.imagemagick.org/script/webp.php

В частности:

Как мне установить качество сжатия? (Я попытался установить setImageCompressionQuality, и он не работает, т.е. вывод всегда одинакового размера)

Как мне установить «метод» (от 0 до 6)?

Спасибо

РЕДАКТИРОВАТЬ: Я следовал совету @ emcconville ниже (спасибо!), И ни метод, ни сжатие не работали. Поэтому я начинаю подозревать, что моя компиляция imagemagick.
Я попытался с помощью командной строки:

convert photo.jpg -resize 1170x1170\> -quality 50 photo.webp

При изменении качества переменной 50 получаемый файл всегда был одинакового размера. Так что должно быть что-то не так с моим имиджмейкером …

0

Решение

Как мне установить «метод» (от 0 до 6)?

Попробуй это…

$im = new Imagick();
$im->pingImage($src);
$im->readImage($src);
$im->resizeImage($width,$height,Imagick::FILTER_CATROM , 1,TRUE );
$im->setImageFormat( "webp" );
$im->setOption('webp:method', '6');
$im->writeImage($dest);

Как мне установить качество сжатия? (Я попытался установить setImageCompressionQuality, и он не работает, т.е. вывод всегда одинакового размера)

Imagick::setImageCompressionQuality кажется, работает для меня, но обратите внимание, что webp:lossless становится активным, если значения 100 или больше (см. источник). Вы можете проверить переключение без потерь, чтобы увидеть, как это влияет на результаты.

$img->setImageFormat('webp');
$img->setImageCompressionQuality(50);
$img->setOption('webp:lossless', 'true');

Редактировать из комментариев

Попробуйте протестировать преобразование изображений в webp напрямую с помощью cwebp полезность.

cwebp -q 50 photo.jpg -o photo.webp

Это также запишет некоторую статистическую информацию в stdout, что поможет отладить происходящее.

Saving file 'photo.webp'
File:      photo.jpg
Dimension: 1170 x 1170
Output:    4562 bytes Y-U-V-All-PSNR 55.70 99.00 99.00   57.47 dB
block count:  intra4: 91
intra16: 5385  (-> 98.34%)
skipped block: 5357 (97.83%)
bytes used:  header:             86  (1.9%)
mode-partition:   2628  (57.6%)
Residuals bytes  |segment 1|segment 2|segment 3|segment 4|  total
macroblocks:  |       0%|       0%|       0%|      98%|    5476
quantizer:  |      45 |      45 |      43 |      33 |
filter level:  |      14 |      63 |       8 |       5 |

Также помните, что для некоторых вопросов настройка качества сжатия не всегда гарантирует уменьшение размера файла. Но это крайние крайние случаи.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]