作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想逐点处理我的图像,但我不知道如何从图像中获取点的颜色。以及如何逐点移动指针?
最佳答案
您无法直接从 UIImage 执行此操作,但您可以使用您提供的内存缓冲区将图像渲染到位图上下文中,然后直接测试内存。这听起来比实际情况更复杂,但可能仍然比您想听到的更复杂。
如果您有 Erica Sadun 的 iPhone Developer's Cookbook,第 54 页对其进行了很好的介绍。总的来说,我会推荐这本书,所以如果您没有的话,值得一读。
我独立地得到了几乎完全相同的代码,但遇到了一个看起来可能也存在于 Sadun 代码中的错误。在 pointInside 方法中,点和大小值是 float ,并在转换为 int 之前作为 float 相乘。如果您的坐标是离散值,这很好,但在我的情况下,我提供了子像素值,因此公式失败了。当然,一旦你发现了问题,修复就很容易了 - 只需在相乘之前将每个坐标转换为 int - 所以,在 Sadun 的情况下,它会是:
long startByte = ((int)point.y * (int)size.width) + (int)point.x) * 4;
此外,Sadun 的代码以及我自己的代码只对 alpha 值感兴趣,因此我们使用仅采用 alpha 值的 8 位像素。更改 CGBitMapContextCreate 调用应该允许您获取实际颜色值(显然,如果每个像素超过 8 位,您也必须将其乘以 pointInside 公式)。
[编辑]这促使我输入 code up on my blog (当我研究如何语法突出显示它时,有一个侧轨):
关于iphone - 如何从 iPhone 上的 UIImage 获取 UIColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/556205/
我是一名优秀的程序员,十分优秀!