How to create Image from unsigned char *

后端 未结 2 1399
独厮守ぢ
独厮守ぢ 2020-12-30 16:47

I am trying to create a new Image from raw data in unsigned char *. I have the bits per pixel from the data stored. I tried converting raw data into NSData, But result image

2条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-30 17:22

    The following code creates a UIImage instance from raw pixel data assuming you have:

    • pixelData: the raw pixel data
    • imageWidth, imageHeight: the image dimensions
    • scanWidth: the number of bytes per scanline
    • bytesPerPixel: the number of bytes used per pixel, usually 4

    The resulting UIImage is assigned to the variable uiImage.

    CGDataProviderRef provider = CGDataProviderCreateWithData(
        NULL, 
        pixelData, 
        imageHeight * scanWidth, 
        NULL);
    
    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
    CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
    CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
    
    CGImageRef imageRef = CGImageCreate(imageWidth,
        imageHeight,
        8,
        bytesPerPixel * 8,
        scanWidth,
        colorSpaceRef,
        bitmapInfo,
        provider,
        NULL,
        NO,
        renderingIntent);
    
    UIImage *uiImage = [UIImage imageWithCGImage:imageRef];
    CGDataProviderRelease(provider);
    CGColorSpaceRelease(colorSpaceRef);
    CGImageRelease(imageRef);
    

提交回复
热议问题