Skip to content

Instantly share code, notes, and snippets.

@Ceroce
Created March 30, 2017 13:49
Show Gist options
  • Save Ceroce/a5feee59af7d6f22a60065b41efd9fec to your computer and use it in GitHub Desktop.
Save Ceroce/a5feee59af7d6f22a60065b41efd9fec to your computer and use it in GitHub Desktop.
Create a CGImage from a CVPixelBuffer
CVPixelBufferLockBaseAddress(pixelBuffer, kCVPixelBufferLock_ReadOnly);
void *baseAddr = CVPixelBufferGetBaseAddress(pixelBuffer);
size_t width = CVPixelBufferGetWidth(pixelBuffer);
size_t height = CVPixelBufferGetHeight(pixelBuffer);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef cgContext = CGBitmapContextCreate(baseAddr, width, height, 8, CVPixelBufferGetBytesPerRow(pixelBuffer), colorSpace, kCGImageAlphaNoneSkipLast);
CGImageRef cgImage = CGBitmapContextCreateImage(cgContext);
CGContextRelease(cgContext);
CGImageRelease(cgImage);
CVPixelBufferUnlockBaseAddress(pixelBuffer, kCVPixelBufferLock_ReadOnly);
CVPixelBufferRelease(pixelBuffer);
@basvk
Copy link

basvk commented Sep 9, 2018

Thanks for this! Don't forget to release the colorSpace though...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment