我正在使用一个 API,它为我提供了一个图像,如下例所示。我不确定如何将这个值数组转换为图像。我以前没见过这个。
有谁知道我如何将以下值数组转换为 UIImage?
[255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96,...]
这看起来像是直接的像素缓冲区数据,因此您必须猜测格式(可能是 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);