来自阵列的UIImage

时间:2012-04-16 05:47:46

标签: ios iphone uiimage

我正在使用API​​,它为我提供了一个图像,如下例所示。我不确定如何将这个值数组转换为图像。我以前没见过。

有谁知道如何将以下数组值转换为UIImage?

[255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96,...]

1 个答案:

答案 0 :(得分:1)

看起来像直接像素缓冲区数据,所以你必须猜测格式(可能是RBGA?)和图像尺寸(希望它是固定的/可猜测的/包含在格式中)。如果你猜对了,你应该可以用CGDataProviderCreateWithData创建一个CIImage;

CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer, bufferLength, NULL);
//a reasonable guess
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
int bitsPerComponent = 8;
int bitsPerPixel = 32;
int bytesPerRow = 4 * width;

CGImageRef imageRef = CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, kCGBitmapByteOrderDefault, provider, NULL, NO, kCGRenderingIntentDefault);
UIImage *newUIImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef); 
CGDataProviderRelease(provider);