В командной строке Imagemagick вы можете преобразовать в HSI или LAB и получить яркость (интенсивность или яркость) из среднего значения канала I или L. Любой из этих методов должен работать. Обратите внимание, что -scale 1x1 выполняет простое усреднение всего изображения/канала и сохраняет это значение в результате в 1 пиксель. -шкала очень быстрая. Это не похоже на -resize, который использует определенную функцию фильтра. В качестве альтернативы вы можете просто вычислить среднее значение изображения без записи в 1 пиксель.
convert image -colorspace HSI -channel b -separate +channel -scale 1x1 -format "%[fx:100*u]\n" info:
convert image -colorspace LAB -channel r -separate +channel -scale 1x1 -format "%[fx:100*u]\n" info:
convert image -colorspace HSI -channel b -separate +channel -format "%[fx:100*u.mean]\n" info:
convert image -colorspace LAB -channel r -separate +channel -format "%[fx:100*u.mean]\n" info:
convert image -colorspace HSI -channel b -separate +channel -format "%[mean]\n" info:
convert image -colorspace LAB -channel r -separate +channel -format "%[mean]\n" info:
Результат будет между 0 и 100%, где 0 означает черный, а 100 белый для всех, кроме последних двух, где диапазон fx находится между 0 и 1. Таким образом, коэффициент 100 дает процент. Для последних двух команд значения будут находиться в диапазоне от 0 до 255 для установки Q8 и от 0 до 65535 для установки Q16.
Обратите внимание, что каналы помечены в порядке, как если бы они были r, g, b. Но для современных версий Imagemagick можно использовать 0,1,2.
В качестве альтернативы вы можете получить цвет пикселя для канала, который будет иметь значение серого:
convert image -colorspace HSI -channel b -separate +channel -scale 1x1 -format "%[pixel:u.p{0,0}]\n" info:
convert image -colorspace LAB -channel r -separate +channel -scale 1x1 -format "%[pixel:u.p{0,0}]\n" info:
Извините, я не знаю Imagick, но см.
http://us3.php.net/manual/en/imagick.scaleimage.php
http://us3.php.net/manual/en/imagick.getimagepixelcolor.php
http://us3.php.net/manual/en/imagick.transformimagecolorspace.php
http://us3.php.net/manual/en/imagick.getimagechannelstatistics.php
или, возможно,
http://us3.php.net/manual/en/imagick.getimageproperty.php
Возможно, эксперт Imagick будет достаточно любезен, чтобы преобразовать одну из этих команд из командной строки в код Imagick.
person
fmw42
schedule
13.07.2018