问题描述
我正在接收图像的原始像素并使用以下函数成功地将它们转换为 CGImage:
func imageFromTexturePixels(raw: UnsafePointer<UInt8>,w: Int,h: Int) -> CGImage? {
// 4 bytes(rgba channels) for each pixel
let bytesPerPixel: Int = 4
// (8 bits per each channel)
let bitsPerComponent: Int = 8
let bitsPerPixel = bytesPerPixel * bitsPerComponent
// channels in each row (width)
let bytesPerRow: Int = w * bytesPerPixel
let cfData = CFDataCreate(nil,raw,w * h * bytesPerPixel)
let cgDataProvider = CGDataProvider(data: cfData!)!
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.last.rawValue)
let image: CGImage! = CGImage(width: w,height: h,bitsPerComponent: bitsPerComponent,bitsPerPixel: bitsPerPixel,bytesPerRow: bytesPerRow,space: deviceColorSpace,bitmapInfo: bitmapInfo,provider: cgDataProvider,decode: nil,shouldInterpolate: false,intent: CGColorRenderingIntent.defaultIntent)
return image
}
我最终真正想要的是一个 PixelBuffer,所以我正在使用 this extension 将该图像转换为一个像素缓冲区。
尽管所有这些都有效,但它看起来有点低效,我想知道如何将原始像素直接转换为 CVPixelBuffer,而不是之前将它们转换为 CGImage。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)