![]() |
1
38
更多细节…今天晚上早些时候,我发表了一篇文章,对本页所说的内容进行了整合和补充,可以在文章的底部找到。不过,我现在正在编辑文章,以发布我建议的(至少对于我的要求,包括修改像素数据)更好的方法,因为它提供了可写数据(而据我所知,以前的文章和本文底部提供的方法提供了对数据的只读引用)。 方法1:可写像素信息
只读数据(以前的信息)-方法2:步骤1。我声明了字节类型:
步骤2。我声明了一个结构来对应一个像素:
步骤3。我将uiImageView子类化并声明(具有相应的合成属性):
步骤4。我放入名为bitmap的方法中的子类代码(返回bitmap像素数据):
步骤5。我做了一个访问方法:
|
![]() |
2
22
这是我对uiimage颜色采样的解决方案。 这种方法将请求的像素呈现到1px大的rgba缓冲区中,并将结果颜色值作为uicolor对象返回。这比我见过的大多数其他方法都快得多,而且只使用很少的内存。 这对于像颜色选择器这样的东西应该很好地工作,在任何给定的时间,您通常只需要一个特定像素的值。 uiimage+选取器.h
uiimage+选取器.m
|
![]() |
3
11
无法直接访问uiimage的位图数据。 您需要获得uiimage的cgimage表示。然后从位图的cfdata表示中获取cgimage的数据提供者。完成后确保释放cfdata。
您可能需要查看CGIMAGE的位图信息以获取像素顺序、图像尺寸等。 |
![]() |
4
5
拉霍斯的回答对我很有帮助。为了获得字节数组形式的像素数据,我执行了以下操作:
更多信息:cfdataref documentation .
另外,记住要包括
|
![]() |
5
3
谢谢大家!把这些答案结合起来,我得到:
这只需要X和Y的点范围为0.0-1.0。示例:
这对我很有用。我做了几个假设,如每像素位数和rgba色彩空间,但这在大多数情况下都适用。 另一个注意事项——它同时在模拟器和设备上为我工作——我以前遇到过这样的问题,因为它在设备上运行时发生了PNG优化。 |
![]() |
6
1
为了在我的应用程序中执行类似的操作,我创建了一个小的屏幕外CGImageContext,然后将uiImage渲染到其中。这使我能够快速提取大量像素。这意味着您可以以易于解析的格式设置目标位图,并让Coregraphics在颜色模型或位图格式之间进行转换。 |
![]() |
7
1
像素位置=(X+(Y*(图像宽度)*字节像素)); //据我所知,这个设备的音高不是问题,可以调零… //(或者从数学中抽出来)。 |
![]() |
8
1
使用 ANImageBitmapRep 提供像素级访问(读/写)。 |
![]() |
user2606782 · 限制子视图在superview边界内的移动 7 年前 |