2016-03-10 5 views
1

В настоящий момент я работаю над проблемой, когда мы рассматриваем проблемы с использованием ЦП на конкретном хосте при конвертации изображений с помощью iMagick. Проблема довольно хорошо описана здесь: https://github.com/ResponsiveImagesCG/wp-tevko-responsive-images/issues/150 (Я не использую эту конкретную библиотеку, но я использую те же самые классы реагирующих изображений, что и они, и я выбрал эту конкретную строку только для некоторых изображений).Каков эффект «постеризации» изображения?

Они, похоже, предполагают, что удаление звонка на ->posterizeImage() устранит их проблему, и в моих тестах я не могу даже отличить преобразованные изображения. Но это беспокоит меня, потому что я задаюсь вопросом, есть ли разница, которую я не вижу, или тот, который появляется только в определенных сценариях (я имею в виду, что если постеризация изображения не сделала ничего, для этого не было бы метода, правильно ?). Я вижу онлайн, что он «уменьшает изображение до ограниченного количества цветов» (136 уровней в случае, вызывающих проблему для меня, для чего это стоит). У меня возникли трудности с анализом, хотя, по-моему, это связано с плохим пониманием того, как различные форматы изображений хранят данные (на самом деле это не проходит мимо идеи, что изображение разбито на пиксели, которые разбиты в пропорции красного зеленого и синего).

Какие фактические визуальные различия я мог ожидать, если мы прекратим анимированные изображения? Это что-то, что я ожидал бы только в определенных типах изображений (например, будет ли он более прозрачным по сравнению с непрозрачными или более теплыми цветными изображениями)? Или это будет более очевидным в некоторых стилях отображения (например, печати или более темной цветовой температуры в iPhone-дисплеях)?

В основном я ищу информацию для информированного выбора о том, можно ли закомментировать. Я не волнуюсь, если это означает, что некоторые изображения могут быть x Kb больше, но если это заставит их выглядеть плохого качества или каким-то образом исказить их (даже в случае с углами), тогда мне нужно рассмотреть другие варианты.

ответ

2

С ImageMagick command line documentation:

-posterize уровни

уменьшить изображение до ограниченного числа уровней цвета для каждого канала.

Очень низкие значения уровней, например, 2, 3, 4, имеют наиболее заметный эффект.

Существует немного больше информации в Color Quantization examples - он также имеет некоторые примеры изображений:

операторов исходной цели (используя аргумент «2») является повторно цвета изображения с помощью всего 8 основных цветов, как если бы изображение было сгенерировано с использованием простого и дешевого способа печати плакатов с использованием только основных цветов. Таким образом, оператор получает свое имя.

...

Аргумент «3» будет отображать цвета изображений на основе палитры из 27 цветов, в том числе средних тонов цвета. В то время как аргумент «4» будет генерировать 64-цветный цвет, а «5» генерирует 125 цветовую цветовую палитру.

По сути, это уменьшает количество цветов, используемых на изображении, - и, соответственно, размер. Использование уровня 136 не оказало бы заметного влияния, так как это соответствует цвету 2,515,456 (136^3).

Также стоит отметить из commit для вопроса вы связаны, что это даже не всегда является эффективным способом уменьшения размера изображения:

... получается, что постеризации только улучшает файл размеры для PNG и могут фактически привести к чуть большему размеру файлов для изображений JPG.

+0

Спасибо, я пошел вперед и отключил его без видимых потерь. Таким образом, в основном цвета исходного изображения, не представленные в новой цветовой карте, заменяются цветом с ближайшей (для некоторого определения ближайшего) цвета к исходному цвету, верно? –

+0

Вот и все! –

2

Posterisation - это уменьшение количества информации о цвете, хранящейся на изображении - как таковое, это действительно снижение качества. Трудно представить, как прекращение этого может быть вредным. И, если позже выяснится, что есть/была законная причина для этого, вы всегда можете это сделать позже, потому что, если вы перестанете это делать, вы все равно будете иметь всю исходную информацию.

Если это было наоборот, и вы начали вводить постеризацию, а позже выяснили, что по какой-то причине это было нежелательно, вы больше не сможете вернуть исходную информацию.

Итак, я не вижу никакого вреда в прекращении постеризации. И тот факт, что я написал это, какие-то проблемы, кто знает, что лучше сказать и сказать мне, что я ошибаюсь :-)

Смежные вопросы