Created
May 25, 2018 17:37
-
-
Save btomtom5/2ba1d36261bf80bfe92775b1f98f6261 to your computer and use it in GitHub Desktop.
Convert UIImage from CVPIxelBuffer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| func getImage(cvPixelBuffer: CVPixelBuffer) -> UIImage{ | |
| CVPixelBufferLockBaseAddress(cvPixelBuffer, CVPixelBufferLockFlags.readOnly) | |
| let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceGray() | |
| let bitsPerComponent = 8 // Look at the quartz 2-D programming guide(Graphic Context) | |
| let targetWidth = CVPixelBufferGetWidthOfPlane(cvPixelBuffer, 0) | |
| let targetHeight = CVPixelBufferGetHeightOfPlane(cvPixelBuffer, 0) | |
| let bytesPerRow = CVPixelBufferGetBytesPerRowOfPlane(cvPixelBuffer, 0) | |
| let baseAddress = CVPixelBufferGetBaseAddressOfPlane(cvPixelBuffer, 0) | |
| let context:CGContext? = CGContext(data: baseAddress, width: targetWidth, height: targetHeight, | |
| bitsPerComponent: bitsPerComponent, bytesPerRow: bytesPerRow, | |
| space: colorSpace, bitmapInfo: CGImageAlphaInfo.none.rawValue) | |
| CVPixelBufferUnlockBaseAddress(cvPixelBuffer, CVPixelBufferLockFlags.readOnly) | |
| if let cgImage: CGImage = context?.makeImage(){ | |
| return UIImage(cgImage: cgImage) | |
| } else{ | |
| return UIImage() | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment