1
我用這讓我的應用程序的視頻如何創建ARGB圖像從RGBA圖片
我目前使用
glReadPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
讀取幀緩衝區,然後使用
-(UIImage *) createARGBImageFromRGBAImage: (UIImage*)image
{
CGSize dimensions = [image size];
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * dimensions.width;
NSUInteger bitsPerComponent = 8;
unsigned char *rgba = malloc(bytesPerPixel * dimensions.width * dimensions.height);
unsigned char *argb = malloc(bytesPerPixel * dimensions.width * dimensions.height);
CGColorSpaceRef colorSpace = NULL;
CGContextRef context = NULL;
colorSpace = CGColorSpaceCreateDeviceRGB();
context = CGBitmapContextCreate(rgba, dimensions.width, dimensions.height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrderDefault); // kCGBitmapByteOrder32Big
CGContextDrawImage(context, CGRectMake(0, 0, dimensions.width, dimensions.height), [image CGImage]);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
for (int x = 0; x < dimensions.width; x++) {
for (int y = 0; y < dimensions.height; y++) {
NSUInteger offset = ((dimensions.width * y) + x) * bytesPerPixel;
argb[offset + 0] = rgba[offset + 3];
argb[offset + 1] = rgba[offset + 0];
argb[offset + 2] = rgba[offset + 1];
argb[offset + 3] = rgba[offset + 2];
}
}
colorSpace = CGColorSpaceCreateDeviceRGB();
context = CGBitmapContextCreate(argb, dimensions.width, dimensions.height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrderDefault); // kCGBitmapByteOrder32Big
CGImageRef imageRef = CGBitmapContextCreateImage(context);
image = [UIImage imageWithCGImage: imageRef];
CGImageRelease(imageRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
free(rgba);
free(argb);
return image;
}
做轉換,但似乎很慢。
推薦一些更快的方式
看到這個答案http://stackoverflow.com/questions/8771471/converting-rgba-to-argb-glreadpixels-avassetwriter –
我是小白。請提供將圖片渲染爲紋理的示例(使用具有該紋理的FBO作爲顏色附件)。接下來使用混合片段着色器將該紋理渲染到另一個幀緩衝區: – anuj
另一種可能性是使用[Accelerate Framework](https://developer.apple.com/library/ios/documentation/Performance/Reference/vImage_conversion/Reference/ reference.html#// apple_ref/doc/uid/TP40005488) –