Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CGBitmapContextCreate返回NULL_Ios_Core Graphics_Cgbitmapcontextcreate - Fatal编程技术网

Ios CGBitmapContextCreate返回NULL

Ios CGBitmapContextCreate返回NULL,ios,core-graphics,cgbitmapcontextcreate,Ios,Core Graphics,Cgbitmapcontextcreate,在什么情况下CGBitmapContext无法分配?我有一个表视图,它有多个视图选项。用户可以看到一个只有预览的小表格单元格,每行一个较大的预览,或每行两个并排预览。前两个渲染很好,但第三个渲染失败。CGBitmapContextCreate没有错误消息,只是在我尝试使用它时出现错误(即无效上下文0x0) 我的目标是iOS 5.0,使用5.1构建。工作版本和非工作版本之间的唯一区别在于,非工作版本尝试执行两次(尺寸较小,小于100x100)。只有右侧有此问题(即第二次尝试)。第一次尝试仍然有效。

在什么情况下CGBitmapContext无法分配?我有一个表视图,它有多个视图选项。用户可以看到一个只有预览的小表格单元格,每行一个较大的预览,或每行两个并排预览。前两个渲染很好,但第三个渲染失败。CGBitmapContextCreate没有错误消息,只是在我尝试使用它时出现错误(即无效上下文0x0)


我的目标是iOS 5.0,使用5.1构建。工作版本和非工作版本之间的唯一区别在于,非工作版本尝试执行两次(尺寸较小,小于100x100)。只有右侧有此问题(即第二次尝试)。第一次尝试仍然有效。

如果
size.width
和/或
size.height
为0,则可能发生这种情况。每次调用此方法时,放置一个
NSLog
来检查大小,以确定是否是这种情况。

对于后代,如果指定的“bytesPerRow”不够大,无法容纳指定的宽度,也会发生这种情况

使用来自

我注意到返回的CVPixelBufferGetWidth()、CVPixelBufferGetHeight()和CVPixelBufferGetBytesPerRow()分别返回1280、720和1960。此处的“bytesPerRow”值(1960)不够宽,无法容纳1280像素宽图像的所有字节。看起来这可能是苹果API中的一个bug


因此,我没有使用CVPixelBufferGetBytesPerRow()返回的值,而是使用了“width*4”,效果很好

啊,太好了。我想我已经检查过了,但显然还不够好。事实上,其中一些是0。干得好,谢谢!!谢谢你的补充信息!作为一个小警告,只要您使用RGBA或类似的每像素4字节模型,它的宽度仅为*4。而且,你提到的数字不是一个bug。该函数返回硬件上使用的每行正确的字节数(对于内存中的不一定正确)。对此进行了讨论
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
//size is a passed parameter
CGContextRef c = CGBitmapContextCreate(NULL, size.width, size.height, 8, size.width*4, colorSpace, kCGImageAlphaNoneSkipLast);
CGColorSpaceRelease(colorSpace);