Как преобразовать CGImage
в CVPixelBuffer
в swift?swift - CGImage to 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
excepts UnsafeMutablePointer и CFDataGetBytePtr(dataFromImageDataProvider)
является UnsafePointer<UIint8>!
)
Если вы знаете, как сделать это в Objective-C, то почему бы не написать Тхи s один метод _in_ Objective-C и заняться вещами? – matt
Потому что я начинаю проект в Swift, и я готов поставить время, чтобы получить информацию на этом языке, и я не знаю Objective-C (и я не хочу больше узнать об этом, to) – Guig
Вопрос в том, как превратить UnsafePointer в UnsafeMutablePointer? Потому что это не очень сложно. – matt