Skip to content

Instantly share code, notes, and snippets.

@darcwader
Created December 9, 2015 06:36
Show Gist options
  • Save darcwader/b8b3dce61b119cefca6f to your computer and use it in GitHub Desktop.
Save darcwader/b8b3dce61b119cefca6f to your computer and use it in GitHub Desktop.
Convert SampleBuffer to UIImage in AVCaptureVideoDataOutputSampleBufferDelegate in Swift
func imageFromSampleBuffer(sampleBuffer:CMSampleBufferRef) -> UIImage? {
if let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) {
CVPixelBufferLockBaseAddress(imageBuffer,0)
let baseAddress = CVPixelBufferGetBaseAddress(imageBuffer)
let bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer)
let width = CVPixelBufferGetWidth(imageBuffer)
let height = CVPixelBufferGetHeight(imageBuffer)
let colorSpace = CGColorSpaceCreateDeviceRGB()
let context = CGBitmapContextCreate(baseAddress,width,height,8,bytesPerRow, colorSpace, CGBitmapInfo.ByteOrder32Little.rawValue | CGImageAlphaInfo.PremultipliedFirst.rawValue)
let quartzImage = CGBitmapContextCreateImage(context)
CVPixelBufferUnlockBaseAddress(imageBuffer,0)
if let quartzImage = quartzImage {
let image = UIImage(CGImage: quartzImage)
return image
}
}
return nil
}
@BhushanG6
Copy link

giving error on line 3
Cannot convert value of type 'Int' to expected argument type 'CVPixelBufferLockFlags'

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