Iphone 将C数组转换为UIImage(对于iOS)

Iphone 将C数组转换为UIImage(对于iOS),iphone,objective-c,image,uiimage,nsarray,Iphone,Objective C,Image,Uiimage,Nsarray,我目前有一些C数组中的图像数据,其中包含RGBA数据 float array[length][4] 我正在尝试将其发送到UIImage,它看起来像是用文件、NSData和URL初始化的。由于其他两种方法速度较慢,我最感兴趣的是NSData方法 我可以将所有这些值放入NSArray,如下所示: for (i=0; i<image.size.width * image.size.height; i++){ replace = [UIColor colorWithRed:array[i

我目前有一些C数组中的图像数据,其中包含RGBA数据

float array[length][4]
我正在尝试将其发送到UIImage,它看起来像是用文件、NSData和URL初始化的。由于其他两种方法速度较慢,我最感兴趣的是NSData方法

我可以将所有这些值放入NSArray,如下所示:

for (i=0; i<image.size.width * image.size.height; i++){
    replace = [UIColor colorWithRed:array[i][0] green:array[i][1] blue:array[i][2] alpha:array[i][3]];
    [output replaceObjectAtIndex:i withObject:replace];
}

for(i=0;i
imageWithData:
用于标准图像文件格式的图像数据,例如内存中的PNG或JPEG文件。它不适用于从原始数据创建图像

为此,您通常会创建一个位图图形上下文,将数组、像素格式、大小等传递给
cgitmapcontextcreate
函数。创建位图上下文后,您可以使用
cgitmapcontextcreateimage
从中创建一个图像,这样您就可以将
CGImageRef
传递给<代码>UIImage
方法
图像与CGImage:

下面是一个基本示例,它创建了一个小的1×2像素图像,其中有一个红色像素和一个绿色像素。它只使用硬编码像素值,用于显示颜色分量的顺序,通常,您可以从其他地方获取此数据,当然:

size_t width = 2;
size_t height = 1;
size_t bytesPerPixel = 4;
//4 bytes per pixel (R, G, B, A) = 8 bytes for a 1x2 pixel image:
unsigned char rawData[8] = {255, 0, 0, 255,  //red
                            0, 255, 0, 255}; //green

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
size_t bytesPerRow = bytesPerPixel * width;
size_t bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast);

CGImageRef cgImage = CGBitmapContextCreateImage(context);
//This is your image:
UIImage *image = [UIImage imageWithCGImage:cgImage];
//Don't forget to clean up:
CGImageRelease(cgImage);
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);

你能给我更多的细节吗?如果你愿意的话,举个例子会非常有用。据我所知,我用
CGBitmapContextCreate
函数制作了一个
CGBitmapContextRef
,但在任何地方都找不到
CGBitmapContextCreateImage
将其传递给
imageWithCGImage.
正确吗?抱歉,
CGBitmapContextRef
不正确,
CGBitmapContextCreate
函数实际上只返回一个常规的
CGContextRef
。我将看看是否能找到一个简单的示例…我在答案中添加了一个基本示例。