如何获取iphone上图像上像素的RGB值
我正在编写一个iPhone应用程序,需要实质上实现一些相当于Photoshop中的“吸管”工具,您可以触摸图像上的一个点并捕获相关像素的RGB值以确定和匹配其颜色。获取UIImage是非常简单的部分,但是有没有办法将UIImage数据转换为位图表示形式,在该表示形式中,我可以为给定像素提取此信息?一个工作代码示例将是最受赞赏的,并注意我不关心alpha值。
所属话题:
bitmapimageiphone,
发起人:
baut,
时间:
2018-05-09,
浏览:
386
8 个回复
您不能直接访问UIImage的位图数据。
您需要获取UIImage的CGImage表示。然后从该位图的CFData表示中获取CGImage的数据提供者。确保在完成时释放CFData。
CGImageRef cgImage = [image CGImage];
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef bitmapData = CGDataProviderCopyData(provider);您可能需要查看CGImage的位图信息以获取像素顺序,图像尺寸等。
ut_et
2018-05-09
为了在我的应用程序中做类似的事情,我创建了一个小屏幕外的CGImageContext,然后将UIImage呈现给它。这使我能够快速提取多个像素。这意味着您可以使用易于解析的格式设置目标位图,并让CoreGraphics在颜色模型或位图格式之间进行转换。
xsit
2018-05-09
拉霍斯的答案为我工作。为了像素数据作为字节数组,我做到了这一点:
UInt8* data = CFDataGetBytePtr(bitmapData);
更多信息:CFDataRef documentation。
另外,请记住包含CoreGraphics.framework
ddolor
2018-05-09
I dont know how to index into image data correctly based on given X,Y cordination. Does anyone know?
pixelPosition =(x +(y *((imagewidth)* BytesPerPixel)));
/ /沥青是不是这个设备的问题,据我所知,可以让零...
//(或者退出数学)。
funde
2018-05-09
更多细节... h2>
我今晚早些时候发布了一个整合,并在本页上发表了一些内容 - 可以在这篇文章的底部找到。然而,我现在正在编辑这篇文章,因为它提供了可写入的数据(但据我所知,所提供的方法)是发布我所建议的(至少对于我的要求,包括修改像素数据)更好的方法通过以前的帖子和在这篇文章的底部提供了对数据的只读引用)。
方法1:可写入的像素信息
我定义了常量
#define RGBA 4
#define RGBA_8_BIT 8 LI></