ios RGBA数据转UIImage

ios RGBA数据转UIImage  UIImage 获取RGBA数据

1. RGBA 数据


由于工作需要 把ffmpeg解压出来的RGBA裸数据 转成UIImage格式的image 再imageview 上进行显示,所以需要使用到下边技术。


2.  获取颜色空间

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

3. 如下所示

CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, _rawImagePixelsTemp, totalBytesForImage, (CGDataProviderReleaseDataCallback)&freeData);
    CGColorSpaceRef defaultRGBColorSpace = CGColorSpaceCreateDeviceRGB();
    
    CGImageRef cgImageFromBytes = CGImageCreate((int)currentFBOSize.width, (int)currentFBOSize.height, 8, 32, 4 * (int)currentFBOSize.width, defaultRGBColorSpace, kCGBitmapByteOrderDefault, dataProvider, NULL, NO, kCGRenderingIntentDefault);
    UIImage *finalImage = [UIImage imageWithCGImage:cgImageFromBytes scale:1.0 orientation:UIImageOrientationDownMirrored];


4, 或者如下说是


- (void) convertBitsDataIntoUIImage:(void*)bitsData
{
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();//
    void *colorData = bitsData;
    
    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, colorData, 180*4*180, NULL);
    CGImageRef cgImage2 = CGImageCreate(180,
                                        180,
                                        8,
                                        8 * 4,
                                        180*4,
                                        colorSpace,
                                        kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault,
                                        provider,
                                        NULL,
                                        NO,
                                        kCGRenderingIntentDefault);
    UIImage *image = [UIImage imageWithCGImage:cgImage2];
    
     _imageView.image = image;

    
    CGDataProviderRelease(provider);
    CGColorSpaceRelease(colorSpace);
    CGImageRelease(cgImage2);
}



你可能感兴趣的:(ios)