1

我想在 Obj-C 或 C 中的 iOS 上做一些科学的图像处理,我需要做的就是获取所有像素 RGBA 的位值的 3D 数组。 UIImage似乎没有内置功能。你们中的任何人都知道如何获取像素值,或者更确切地说是一个包含这些函数的预定义库吗?提前致谢, 杰姆

4

1 回答 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 回答