網上搜羅實驗了各種方法,最後找到一個很簡單的,簡單到就只要一行代碼:
CFDataRef bitmapData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
這裡拿到的bitmapData變量裡面就包含了所有像素的所有信息,記得用完了之後要釋放bitmapData所占有的空間。CFData的用法可以參考官方文檔。
使用CFDataGetLength函數可以看到,這個數據的長度是4*image.size.width*image.size.height。也就是每一個像素點都占據了四個字節的長度,依次序分別是RGBA,即紅色、綠色、藍色值和透明度值。
使用函數 CFDataGetBytePtr(bitmapData) 就可以拿到字節數組的指針了。