这是一个问题:假设我们有一个透明的png图像200x200,其形状从x,y(50,50)开始,宽度为50px,高度为20px。
有没有办法使用PHP(gdlib或imagemagick),我可以得到相对于图像大小的形状的位置?对于给出的示例,脚本应该返回(x1 = 50,y1 = 70,x2 = 100,y2 = 70)
答案 0 :(得分:3)
什么意思是“从”开始的形状“?例如,对于椭圆,您想要找到一个矩形的左上角,它将覆盖整个椭圆?
如果是,那么你可以从上到下遍历图像的每个像素(getpixel
会给你一个像素的颜色),搜索不透明的最上面和最下面的点(结束循环)什么时候发现)。它将是您的 y1 和 y2 点。然后,你做同样的事情从左到右循环在y1 - y2范围内找到 x1 和 x2 。
这可能不是很优化,所以你可能想要想象一个更好的算法。例如,如果图像为300×200像素,则可以通过以下方式搜索最高点:
顺便说一下,当你扫描第25行时,你在坐标 x = 74,y = 50 处找到了一个非透明点。现在,当以最相同的方式搜索最左边的点时,你可以从37(74/2)开始,而不是从 x = 150 (宽度/ 2)开始,因为你已经知道那里< strong> x = 74 的对象。