В настоящее время я работаю над проблемой, когда мы видим проблемы использования ЦП на конкретном хосте при конвертации изображений с помощью iMagick. Проблема довольно хорошо описана здесь:
https://github.com/ResponsiveImagesCG/wp-tevko-responsive-images/issues/150 (Я не использую эту конкретную библиотеку, но я действительно использую те же классы адаптивных изображений, которые они используют, и я рассчитываю на эту конкретную строку, только для некоторых изображений).
Кажется, они предполагают, что удаление вызова ->posterizeImage()
Я исправлю их проблему, и в моих тестах я даже не вижу никакой разницы в преобразованных изображениях. Но это беспокоит меня, потому что мне интересно, есть ли разница, которую я не вижу, или та, которая возникает только в определенных сценариях (я имею в виду, что если бы постеризация изображения ничего не делала, не было бы способа для этого, верно? ?). Я вижу в Интернете, что он «уменьшает изображение до ограниченного количества уровней цвета» (136 уровней в случае, если вызывает проблему для меня, для чего это стоит). У меня возникли некоторые трудности с анализом, хотя, я думаю, это связано с плохим пониманием того, как различные форматы изображений хранят данные (на самом деле это не идет мимо идеи, что изображение разбивается на пиксели, которые разбиваются в пропорции красного, зеленого и синего).
Какие реальные визуальные различия можно ожидать, если мы перестанем постеризовать изображения? Это то, что я ожидал бы только в определенных типах изображений (например, было бы оно более заметным на прозрачных поверх непрозрачных или теплых цветных изображениях)? Или это было бы более очевидно в определенных стилях отображения (таких как печать или более высокая цветовая температура на дисплеях iPhone)?
В основном я ищу информацию, чтобы сделать осознанный выбор относительно того, безопасно ли комментировать. Я не волнуюсь, если это означает, что некоторые изображения могут быть в x КБ больше, но если это заставит их выглядеть плохо или искажать их каким-либо образом (даже в угловых случаях), тогда мне нужно рассмотреть другие варианты.
Из ImageMagick документация командной строки:
-постеризировать уровни
уменьшить изображение до ограниченного количества уровней цвета на канал.
Очень низкие значения уровней, например, 2, 3, 4, оказывают наиболее заметное влияние.
Есть немного больше информации в Примеры квантования цветов — у него также есть несколько примеров изображений:
Первоначальная цель операторов (с использованием аргумента ‘2’) состоит в том, чтобы перекрасить изображения, используя всего 8 основных цветов, как если бы изображение было создано с использованием простого и дешевого метода печати плакатов, использующего только основные цвета. Таким образом, оператор получает свое имя.
…
Аргумент «3» отобразит цвета изображения на основе цветовой карты 27 цветов, включая полутоновые цвета. В то время как аргумент ‘4’ генерирует цветовую таблицу из 64 цветов, а ‘5’ генерирует цветовую карту из 125 цветов.
По сути, это уменьшает количество цветов, используемых в изображении, и, соответственно, увеличивает размер. Использование уровня 136 не окажет заметного влияния, так как это приведет к цветовой таблице 2 515 456 цветов (136 ^ 3).
Стоит также отметить совершить проблема, с которой вы столкнулись, заключается в том, что это не всегда эффективный способ уменьшения размера изображения:
… получается, что постеризация только улучшает размеры файлов
для PNG и может на самом деле привести к немного большим размерам файлов для
JPG изображения.
Постеризация — это уменьшение количества информации о цвете, хранящейся в изображении, и, как таковое, это действительно снижение качества. Трудно представить, как прекращение этого может быть вредным. И, если позже выясняется, что для этого есть / была законная причина, вы всегда можете сделать это позже, потому что, если вы прекратите делать это сейчас, у вас останется вся исходная информация.
Если бы все было наоборот, и вы начали вводить постеризацию, а потом обнаружили, что это по какой-то причине нежелательно, вы больше не сможете получить исходную информацию.
Так что я не вижу вреда в прекращении постеризации. И тот факт, что я написал это, ставит под сомнение любого, кто знает, лучше сказать и сказать мне, что я не прав 🙂