Как получить разные результаты «качества» WebP с помощью PHP Imagick? setImageCompressionQuality не имеет никакого эффекPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как получить разные результаты «качества» WebP с помощью PHP Imagick? setImageCompressionQuality не имеет никакого эффек

Сообщение Anonymous »

После прочтения нескольких упоминаний там все говорит о том, что все, что вам нужно сделать, это использовать setImageCompressionQuality, чтобы установить качество и настроить его по своему вкусу от 1 до 100.
Тогда я ожидал бы, что если бы я попробовал 90, затем 70, а затем 40, я бы увидел другое выходное изображение и размеры файлов, верно?!?
Однако, потратив несколько часов, пробуя каждую комбинацию из различные фрагменты кода и параметров, я не могу получить ничего другого... кроме как изменив значения "webp:method" с 1 на 6. Но это должно быть эффективностью, а не качеством.
ЛЮБЫЕ изменения в webp:quality или setImageCompressionQuality или webp:near-lossless приводят к точно такому же изображению (по сравнению с супер-зумом в фотошопе) и размер файла.
Базовая настройка теста:

Код: Выделить всё

$imagick = new Imagick($source);
$imagick->setImageFormat('webp');
// - option attempts put here -
$imagick->writeImage($destination);
Все попытки ниже приводят к одинаковому качеству/размеру изображения:

Код: Выделить всё

// attempt 1
$imagick->setImageCompressionQuality(90);

// attempt 2
$imagick->setImageCompressionQuality(10);

// attempt 3
$imagick->setOption('webp:lossless','false');
$imagick->setImageCompressionQuality(80);

// attempt 4
$imagick->setOption('webp:lossless','false');
$imagick->setOption('webp:quality','50');

// attempt 5
$imagick->setOption('webp:lossless','false');
$imagick->setOption('webp:near-lossless','69');
Однако эти попытки приводят к разным размерам изображений/файлов:

Код: Выделить всё

// attempt 6
$imagick->setOption('webp:lossless','false');
$imagick->setOption('webp:method','1');

// attempt 7
$imagick->setOption('webp:lossless','false');
$imagick->setOption('webp:method','3');

// attempt 8
$imagick->setOption('webp:lossless','false');
$imagick->setOption('webp:method','6');
Если я включаю без потерь, файл раздувается до огромных размеров, и никакие другие параметры не дают никакого эффекта (чего и следовало ожидать при преобразовании WebP без потерь).
Версии в воспроизведении:

Код: Выделить всё

ImageMagick 6.9.12-98 Q16 x86_64 18038

Код: Выделить всё

Imagick Module Version 3.8.0

Код: Выделить всё

PHP Version 8.1.33
Отредактируйте дополнительную информацию:
  • Просто используйте базовый jpg размером 300 КБ в качестве источника (также пробовали использовать PNG размером 1 МБ). Исходный код существует, в порядке и чист (без метаданных и т. д.).
  • Выходные данные оцениваются из каталога сервера, кэш не задействован (время файла обновляется, но размер файла остается неизменным почти для всех тестов качества).
  • Я использую только увеличенный фотошоп в качестве визуального теста, рассматривая некоторые из предыдущих аномалий пикселей, и новую версию. Это совершенно очевидно, когда изображение действительно меняется.


Подробнее здесь: https://stackoverflow.com/questions/797 ... ecompressi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»