2
如何将swift中的CGImage
转换为CVPixelBuffer
?swift - CGImage到CVPixelBuffer
我知道有很多问题想要做相反的事情,还有一些客观的C回答,比如this one,但我无法让他们迅速工作。下面是我得到的最接近:
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>!
)
如果你知道如何在Objective-C这样做,为什么不写THI一种方法_in_ Objective-C并继续进行下去? – matt
因为我在Swift中开始一个项目,所以我愿意花时间用这种语言来获取东西,而且我也不了解Objective-C(我也不是很愿意学习它,我真的有更多到) – Guig
那么,如何将一个UnsafePointer变成一个UnsafeMutablePointer?因为这不是很困难。 – matt