首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CGBitmapContextCreate无效数据字节/行

CGBitmapContextCreate无效数据字节/行
EN

Stack Overflow用户
提问于 2015-10-19 13:34:57
回答 1查看 2.9K关注 0票数 2

我想用一个来自苹果开发者页面的例子。AVFoundation上的苹果开发页面

现在,我使用了imageFromSampleBuffer:sampleBuffer方法作为文档解释。我是用Swift写的,所以我尽可能好地从Obj转换到Swift 2。

我不得不收到关于invalid data bytes/row: should be at least 7680 for 8 integer bits/component, 3 components, kCGImageAlphaPremultipledFirstCGBitmapContextCreateImage: invalid context 0x0.的错误

代码语言:javascript
运行
复制
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)
  }

这就是我所说的方法:

代码语言:javascript
运行
复制
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
    print("Delegate called")
    let image = imageFromSampleBuffer(sampleBuffer)
    print(image)
  }

我完全不知道该怎么做。

EN

回答 1

Stack Overflow用户

发布于 2015-10-19 13:53:20

  1. 检查CGBitmapContextCreate的可接受参数列表( at:编号/doc/uid/doc 30001066-CH203 203-BCIBHHBB )
  2. 检查捕获的缓冲区是否为8位/组件RGB,而不是其他格式。
  3. 检查输入缓冲区是否缺少alpha组件。那么您应该使用kCGImageAlphaNone。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33215861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档