检查图像中有孔的重叠图像

时间:2012-09-02 00:31:35

标签: ios xcode core-graphics cgrect cgrectmake

我有两个图像视图。它们是“拼图”我想测试一个是否适合另一个。不是框架重叠。我猜它是一个CGRect的东西......但似乎他们测试外边界。任何想法,将不胜感激?谢谢。

2 个答案:

答案 0 :(得分:2)

在这里集思广益......也许这会让你想到一些适合你的事情。如果图像不重叠,则在图像B的顶部绘制图像A将导致与在图像A的顶部上绘制图像B相同的图像。如果它们重叠,则将导致不同的图像。你可以做一些事情,比如绘制图像A,然后是B.创建结果的校验和,再次绘制A,以及校验和。如果校验和匹配,拼图就适合。

如果您有一个代表每个图像的1位掩码,那么将它们组合在一起并将它们一起进行异或运算如果它们不重叠则会产生相同的结果,如果它们不相同则结果不同。

答案 1 :(得分:1)

您事先知道正确的碎片顺序吗?可能最好将标记分配给每个UIImageView,这将代表图像的索引号。然后,您只需创建一种网格并检查该块放置的单元格。如果单元格编号与UIImageView标记匹配 - 那么这是正确的位置。

如果您只有两个图像,而另一个图像必须适合另一个图像中的特定区域,则可以存储此孔的边框并检查该图块是否放置在该框架中心的某处。它将更加用户友好,因为当您检查像素或位掩码时,您希望用户非常精确。或者你的比较代码应该允许一些变化并且会非常复杂。

但是如果您不想对孔框进行硬编码,您可以动态计算它(只需找到图像中的透明区域)。无论如何,这个解决方案比在运行中检查位匹配更有效。