Как найти средний цвет изображения с помощью 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)
