Три года спустя, и просто для удовольствия, вот некоторые мысли о способе приблизиться к этому с помощью ImageMagick из командной строки...
Во-первых, вы можете извлечь канал прозрачности, используя -alpha extract <filename>
, но на самом деле мне не нужен этот файл, поэтому я могу передать его другой команде convert
, чтобы исключить все, где альфа не равна 1 (я предполагаю 16-битное квантование, т.е. 65535=1), а затем спросите ImageMagick, как он обрежет это изображение до наименьшей ограничивающей рамки, используя -format %@ -write info:
convert rectangle.png -alpha extract png:- | convert - -threshold 65534 -format %@ -write info: alpha.png
Вывод
91x118+80+81
Это говорит мне о том, что ограничивающая рамка для пороговой прозрачности имеет ширину 91 пиксель и высоту 118 пикселей, и она начинается на 80 пикселей от верхнего левого угла и, что наиболее важно, начинается на 81 пиксель вниз сверху — теперь я знаю, что координата y равна 81. .
Хотя на самом деле нам это не нужно, чтобы найти искомый пиксель, это помогает показать, что я делаю, поэтому позвольте мне просто нарисовать это поле, чтобы вы могли его видеть:
convert rectangle.png -stroke red -fill none -draw "rectangle 80,81 170,198" fyi.png
![введите здесь описание изображения](https://i.stack.imgur.com/FaYMV.png)
Теперь я могу обрезать только 81-ю строку изображения и искать первый белый пиксель с grep
и выходить, как только я его нахожу.
convert alpha.png -crop x1+0+81 txt: | grep -m1 "#FFFFFF"
Вывод
147,0: (65535,65535,65535) #FFFFFF gray(255)
Итак, это говорит мне, что первый белый пиксель имеет ширину 147, поэтому я также знаю координату x. Следовательно, искомый пиксель имеет разрешение 147,81.
person
Mark Setchell
schedule
25.11.2015