从原始像素到 PixelBuffer 的最有效方法是什么?

问题描述

我正在接收图像的原始像素并使用以下函数成功地将它们转换为 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...