您的位置:首页 > 产品设计 > UI/UE

data buffer与CGImage/UIImage互转

2016-01-26 10:27 429 查看
(1)data buffer转CGImage和UIImage,可以先转CGImage再转UIImage。直接粘贴代码:

void dataProviderReleaseCallback (void *info,
const void *data,
size_t size)

{

free((void *)data);

}

- (UIImage*)convertBufferToUIImage:(void*)rawImagePixels width:(int)width height:(int)height

{

int totalBytesForImage = width * height *
4;

//rawImagePixels = (GLubyte *)malloc(totalBytesForImage);

CGDataProviderRef dataProvider =
CGDataProviderCreateWithData(NULL, rawImagePixels, totalBytesForImage,
dataProviderReleaseCallback);

CGColorSpaceRef defaultRGBColorSpace =
CGColorSpaceCreateDeviceRGB();

CGImageRef cgImageFromBytes =
CGImageCreate(width, height, 8,
32, 4 * width, defaultRGBColorSpace,
kCGBitmapByteOrderDefault | kCGImageAlphaLast, dataProvider,
NULL, NO,
kCGRenderingIntentDefault);

CGDataProviderRelease(dataProvider);

CGColorSpaceRelease(defaultRGBColorSpace);

UIImage *image = [UIImage
imageWithCGImage:cgImageFromBytes];



return image;

}

(2)UIImage转data buffer:

- (GLubyte *)convertUIImageToBuffer:(UIImage*)image width:(int)width height:(int)height

{

GLubyte *imageData =
NULL;



CFDataRef dataFromImageDataProvider =
CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));

imageData = (GLubyte *)CFDataGetBytePtr(dataFromImageDataProvider);



//CFRelease(dataFromImageDataProvider);//最后别忘了release



return imageData;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: