我需要找到第一个像素的x坐标以及具有alpha集1的y坐标。我有一个透明图像,我有一个黑色边框矩形。现在我需要找到矩形的顶部和左侧。
例如,检查图片:
所以我想到,如果我能在图像中得到第一个非透明点,我可以得到它的坐标并了解它。
可以在php中使用Imagick完成。我读到了关于pixelIterator的内容,但我如何使用它来做到这一点?有什么建议或想法吗?
答案 0 :(得分:1)
您可以遍历所有像素并使用Imagick::getImagePixelColor(x,y)函数来读取颜色。
答案 1 :(得分:0)
三年后,只是为了踢,这里有一些关于从命令行使用ImageMagick来解决这个问题的想法......
首先,您可以使用-alpha extract <filename>
提取透明度通道,但我真的不想要该文件,因此我可以将其传输到另一个convert
命令,以限制alpha所在的任何位置不是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
告诉我,阈值透明度的边界框是91px宽,高118像素,它从左上角开始向上80px,最重要的是它从顶部向下开始81像素 - 我现在知道y坐标是81。
虽然我们实际上并不需要它来找到你寻找的像素,但它有助于展示我正在做的事情,所以让我只是画那个盒子让你看到它:
convert rectangle.png -stroke red -fill none -draw "rectangle 80,81 170,198" fyi.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。