我想在 Obj-C 或 C 中的 iOS 上做一些科学的图像处理,我需要做的就是获取所有像素 RGBA 的位值的 3D 数组。 UIImage
似乎没有内置功能。你们中的任何人都知道如何获取像素值,或者更确切地说是一个包含这些函数的预定义库吗?提前致谢, 杰姆
问问题
317 次
1 回答
1
您通常会创建一个CGBitmapContext
,告诉它使用您自己分配的一些内存(因此,您知道它在哪里以及如何访问它)或者让 Core Graphics 为您解决这个问题并CGBitmapContextGetData
在您仅定位时调用iOS 4/OS X 10.6 及更高版本,然后绘制您想要检查的任何内容。
例如(为简洁起见,故意省略了错误检查和一些设置步骤;查找我使用的变量,尽管没有定义并检查函数文档)
CGBitmapInfo bitmapInfo =
kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host;
context =
CGBitmapContextCreate(
NULL,
width, height,
8,
width * 4,
rgbColourSpace,
bitmapInfo);
CGContextDrawImage(
context,
CGRectMake(0.0f, 0.0f, (CGFloat)width, (CGFloat)height),
[image CGImage]);
uint8_t *pixelPointer = CGBitmapContextGetData(context);
for(size_t y = 0; y < height; y++)
{
for(size_t x = 0u; x < width; x++)
{
if((bitmapInfo & kCGBitmapByteOrder32Little))
{
NSLog(@"rgba: %02x %02x %02x %02x",
pixelPointer[2], pixelPointer[1],
pixelPointer[0], pixelPointer[3]);
}
else
{
NSLog(@"rgba: %02x %02x %02x %02x",
pixelPointer[1], pixelPointer[2],
pixelPointer[3], pixelPointer[0]);
}
pixelPointer += 4;
}
}
于 2012-05-14T23:38:29.373 回答