2015-02-05 121 views
1
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 

self._bitmapContext = CGBitmapContextCreate(
     NULL, 
     pixelWidth, 
     pixelHeight, 
     8, 
     4 * pixelWidth, 
     colorSpace, 
     (CGBitmapInfo)kCGImageAlphaPremultipliedFirst); 
if (self._bitmapContext) { 
    // this is NULL 
    char *bitmapData = CGBitmapContextGetData(self._bitmapContext); 
} else { 
    NSLog(@"Couldn't create bitmap\n"); 
} 

如果你传递NULL的数据 指针创建位图上下文时,可以安全地获取数据 指针的iOS 4.0和更高版本以及OS X v10.6中和后只要。在早期 版本的操作系统,传递NULL作为数据参数 不支持并尝试使用该功能CGBitmapContextGetData()返回NULL

我针对的iOS 8.1

访问 这个数据时,可能会导致死机Quartz似乎没有创建支持数据 - 因此我无法创建图像。

回答

2

我要去猜测,最后一个参数是不够的iOS创建位图 - 我只是看着我的一些代码,这是我用我的iOS应用程序是什么:

kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Little 

如果不这样做,请记录您使用的像素宽度/高度(请实际记录它,而不是假设)。

+0

对不起,需要一些时间来回复。这有点令人尴尬 - 我现在不怎么为字节顺序添加一个标志。谢谢! – zac 2015-02-07 19:21:54

+0

我甚至无法统计我在职业生涯中遇到的令人尴尬的编码错误的次数,我也多次在这里寻求帮助。很高兴你没有浪费更多时间! – 2015-02-08 13:20:48