gpt4 book ai didi

ios - CGBitmapContextCreate 无效数据字节/行

转载 作者:行者123 更新时间:2023-11-29 12:11:56 27 4
gpt4 key购买 nike

我想使用来自 Apple 开发人员页面的示例。 Apple Dev Pages on AVFoundation

现在,我按照文档说明使用了 imageFromSampleBuffer:sampleBuffer 方法。我正在用 Swift 编写,所以我尽可能地从 Obj-C 转换到 Swift 2。

我忍不住收到有关无效数据字节/行的错误:对于 8 个整数位/组件、3 个组件、kCGImageAlphaPremultipledFirstCGBitmapContextCreateImage 应该至少为 7680:无效上下文 0x0 .

func imageFromSampleBuffer(sampleBuffer: CMSampleBufferRef) -> UIImage {
let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
CVPixelBufferLockBaseAddress(imageBuffer!, 0)
let baseAddress = CVPixelBufferGetBaseAddress(imageBuffer!)
let bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer!)
let width = CVPixelBufferGetWidth(imageBuffer!)
let height = CVPixelBufferGetHeight(imageBuffer!)
let colorSpace = CGColorSpaceCreateDeviceRGB()
let context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, CGImageAlphaInfo.PremultipliedFirst.rawValue)
let qImage = CGBitmapContextCreateImage(context)
CVPixelBufferUnlockBaseAddress(imageBuffer!, 0)
let image = UIImage(CGImage: qImage!)
return(image)
}

这就是我调用该方法的方式:

func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
print("Delegate called")
let image = imageFromSampleBuffer(sampleBuffer)
print(image)
}

我完全不知道如何进行。

最佳答案

  1. 检查 CGBitmapContextCreate 可接受的参数列表:https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-BCIBHHBB
  2. 检查您捕获的缓冲区是否为 8 位/分量 RGB 而不是其他格式。
  3. 检查输入缓冲区是否缺少 alpha 分量。那么你应该使用 kCGImageAlphaNone。

关于ios - CGBitmapContextCreate 无效数据字节/行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com