我正在使用API,它为我提供了一个图像,如下例所示。我不确定如何将这个值数组转换为图像。我以前没见过。
有谁知道如何将以下数组值转换为UIImage?
[255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96,...]
答案 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);