CGContextDrawImage错误,如何分配缓冲区?

时间:2015-09-17 10:22:18

标签: ios swift buffer cgbitmapcontextcreate cgcontextdrawimage

我正在尝试将图像数据存储在我的应用程序中的缓冲区中,因此我可以使用它但是我在CGContextDrawImage行上出现了EXC_BAD_ACCESS错误。 这是我正在使用的代码:

resizedImage.Array() // resizedImage - resized image of 280x140 pixels size
    func Array() {
        let dataBuffer = UnsafeMutablePointer<CUnsignedChar>.alloc(156800) //alloc(156800)
        memset(dataBuffer, 0, 156800)
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let bitmapInfo = CGBitmapInfo(rawValue: CGBitmapInfo.ByteOrder32Big.rawValue | CGImageAlphaInfo.PremultipliedLast.rawValue)
        let context = CGBitmapContextCreate(dataBuffer, 280, 140, 8, 156800, colorSpace, bitmapInfo.rawValue)
        let imageRef = CGImageCreateWithImageInRect(CGImage, CGRectMake(0, 0, 280, 140))
        let rectMake = CGRectMake(0, 0, 280, 140)
        CGContextDrawImage(context, rectMake, imageRef)

return
}

当尝试将缓冲区和字节设置为null和0时,就像苹果文档中的自动内存分配应用程序不会崩溃,但它会出现这样的错误:

Sep 17 17:18:33  VideoTester[4846] <Error>: CGBitmapContextCreate: invalid data bytes/row: should be at least 1120 for 8 integer bits/component, 3 components, kCGImageAlphaPremultipliedLast.
Sep 17 17:18:33  VideoTester[4846] <Error>: CGContextDrawImage: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

似乎我错过了一些东西,但无法弄明白,需要任何建议,谢谢!

1 个答案:

答案 0 :(得分:0)

peacer212 的帮助下工作,所有内容似乎都可以正常工作,没有任何错误,这是一个正常工作的代码:

swift  -A  https://127.0.0.1:443/auth/v1.0  -U   swiftops:swiftops   -K download container_name -m container_name