Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension UIImage {
- func pixelBuffer() -> CVPixelBuffer? {
- let frameSize = CGSize(width: self.size.width, height: self.size.height)
- var pixelBuffer:CVPixelBuffer? = nil
- let status = CVPixelBufferCreate(kCFAllocatorDefault, Int(frameSize.width), Int(frameSize.height), kCVPixelFormatType_32BGRA , nil, &pixelBuffer)
- if status != kCVReturnSuccess {
- return nil
- }
- CVPixelBufferLockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags.init(rawValue: 0))
- let data = CVPixelBufferGetBaseAddress(pixelBuffer!)
- let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
- let bitmapInfo = CGBitmapInfo(rawValue: CGBitmapInfo.byteOrder32Little.rawValue | CGImageAlphaInfo.premultipliedFirst.rawValue)
- let context = CGContext(data: data, width: Int(frameSize.width), height: Int(frameSize.height), bitsPerComponent: 8, bytesPerRow: CVPixelBufferGetBytesPerRow(pixelBuffer!), space: rgbColorSpace, bitmapInfo: bitmapInfo.rawValue)
- context!.draw(self.cgImage!, in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))
- CVPixelBufferUnlockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0))
- return pixelBuffer
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement