我想逐点处理我的图像,但我不知道如何从图像中获取点的颜色。那么如何逐点移动指针呢?
您无法直接从 UIImage 执行此操作,但您可以使用您提供的内存缓冲区将图像渲染到位图上下文中,然后直接测试内存。
这听起来比实际情况更复杂,但可能仍然比您想听到的更复杂。
如果您有 Erica Sadun 的 iPhone Developer's Cookbook,第 54 页对其进行了很好的介绍。总的来说,我会推荐这本书,所以如果您没有的话,值得一读。
我独立地得到了几乎完全相同的代码,但遇到了一个看起来可能也在 Sadun 的代码中的错误。在 pointInside 方法中,点和大小值是浮点数,并在转换为 int 之前作为浮点数相乘。如果您的坐标是离散值,这很好,但在我的情况下,我提供了子像素值,因此公式失败了。当然,一旦你发现了问题,修复就很容易了——只需在相乘之前将每个坐标转换为 int 即可——所以,在 Sadun 的情况下,它会是:
long startByte = ((int)point.y * (int)size.width) + (int)point.x) * 4;
另外,Sadun 的代码以及我自己的代码只对 alpha 值感兴趣,因此我们使用仅采用 alpha 值的 8 位像素。更改 CGBitMapContextCreate 调用应该允许您也获取实际颜色值(显然,如果每个像素超过 8 位,您也必须将其乘以 pointInside 公式)。
[编辑]
这促使我把在我的博客上编写代码 http://www.levelofindirection.com/journal/2009/9/24/getting-at-pixel-data-from-a-uiimage-for-iphone-dev.html(当我研究如何语法突出显示它时,有一个侧轨):
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)