Как найти средний цвет изображения с помощью ImageMagick?
Как получить значения RGB среднего цвета изображения, где каждое значение равно 0-255? Такие как "255,255,255"
Я запускаю эту команду, чтобы сжать изображение, и он возвращает значение "rgba" с альфа-каналом, а иногда дает имена цветов текста:
convert cat.png -resize 1x1! -format "%[pixel:u]n" info:
выход:
rgba(155,51,127,0.266087)
2 ответов
вы можете сделать следующее, чтобы разобрать только значения RGB, разделенные запятыми. Он также не будет возвращать имена цветов текста.
convert cat.png -resize 1x1\! \
-format "%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]" info:-
формат вывода должен выглядеть так:
155,51,127
Это должно работать в ImageMagick 6.3.9.1+
в моем ответе есть два аспекта:
- изменять размер исходного изображения на 1 пиксель изображения. Тогда этот пиксель будет иметь "средний" цвет, как ImageMagick в
convert
видит его. - выведите результат как специальный при поддержке
convert
. Этот текстовый формат перечисляет все пиксели изображения, давая сначала его координаты ($row,$column:
), затем его значения RGB или CMYK в разных форматах.
вот команда, которая охватывает оба аспекты в одном:
convert cat.png -resize 1x1 out.txt
cat out.txt
чтобы получить выход непосредственно в окне терминала, вы можете использовать:
convert cat.png -resize 1x1 txt:-
пример:
convert p4.png -resize 1x1 txt:-
# ImageMagick pixel enumeration: 1,1,255,srgb
0,0: (189,185,184) #BDB9B8 srgb(189,185,184)