2015-02-05 54 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