我该如何在swift中将
我知道有许多试图进行相反操作的问题,也知道一些Objective-C的答案,例如这个,但我无法使它们在swift中工作。以下是我最接近的方法:
CGImage
转换为CVPixelBuffer
?我知道有许多试图进行相反操作的问题,也知道一些Objective-C的答案,例如这个,但我无法使它们在swift中工作。以下是我最接近的方法:
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>!
的类型。