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