如何将CGImage转换为CVPixelBuffer?
我意识到很多问题都是相反的,还有一些客观的C答案,比如这一个,但我无法让他们迅速地工作。这是我最近看到的:
func pixelBufferFromCGImage(image: CGImage) -> CVPixelBuffer {
var pxbuffer: CVPixelBuffer? = nil
let options: NSDictionary = [:]
let width = image.width
let height = image.height
let bytesPerRow = image.bytesPerRow
let dataFromImageDataProvider = image.dataProvider!.data
let x = CFDataGetBytePtr(dataFromImageDataProvider)
CVPixelBufferCreateWithBytes(
kCFAllocatorDefault,
width,
height,
kCVPixelFormatType_32ARGB,
CFDataGetBytePtr(dataFromImageDataProvider),
bytesPerRow,
nil,
nil,
options,
&pxbuffer
)
return pxbuffer!;
}(这不能编译,因为CVPixelBufferCreateWithBytes例外于UnsafeMutablePointer,CFDataGetBytePtr(dataFromImageDataProvider)是UnsafePointer<UIint8>!)
发布于 2016-11-18 20:05:35
您需要使用UnsafeMutablePointer,要做到这一点,可以将CFData转换为CFMutableData,然后获取CFData(例如:
let dataFromImageDataProvider = CFDataCreateMutableCopy(kCFAllocatorDefault, 0, image.dataProvider!.data)
let x = CFDataGetMutableBytePtr(dataFromImageDataProvider)https://stackoverflow.com/questions/38318387
复制相似问题