我想用一个来自苹果开发者页面的例子。AVFoundation上的苹果开发页面
现在,我使用了imageFromSampleBuffer:sampleBuffer
方法作为文档解释。我是用Swift写的,所以我尽可能好地从Obj转换到Swift 2。
我不得不收到关于invalid data bytes/row: should be at least 7680 for 8 integer bits/component, 3 components, kCGImageAlphaPremultipledFirst
和CGBitmapContextCreateImage: invalid context 0x0.
的错误
func imageFromSampleBuffer(sampleBuffer: CMSampleBufferRef) -> UIImage {
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, CGImageAlphaInfo.PremultipliedFirst.rawValue)
let qImage = CGBitmapContextCreateImage(context)
CVPixelBufferUnlockBaseAddress(imageBuffer!, 0)
let image = UIImage(CGImage: qImage!)
return(image)
}
这就是我所说的方法:
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
print("Delegate called")
let image = imageFromSampleBuffer(sampleBuffer)
print(image)
}
我完全不知道该怎么做。
发布于 2015-10-19 13:53:20
CGBitmapContextCreate
的可接受参数列表( at:编号/doc/uid/doc 30001066-CH203 203-BCIBHHBB )https://stackoverflow.com/questions/33215861
复制相似问题