5
我正在加載一個灰度PNG圖像,我想訪問底層像素數據。然而,在我通過CGImageGetDataProvider獲取像素數據後,返回的數據的長度比預期的要長。從CGImageGetDataProvider返回的數據長度大於預期
CCGDataProviderRef provider = CGDataProviderCreateWithFilename(cStr);
CGImageRef image = CGImageCreateWithPNGDataProvider(provider, NULL, FALSE, kCGRenderingIntentDefault);
mapWidth = CGImageGetWidth(image);
mapHeight = CGImageGetHeight(image);
lookupMap = CGDataProviderCopyData(CGImageGetDataProvider(image));
mapWidth出來1804年和 mapHeight出來,以1005產品,它是1813020
當我打電話
CFDataGetLength(lookupMap)
響應是1833120.
在哪裏這些額外的20100字節是從哪裏來的? 這裏的任何幫助非常感謝。我是否缺少有關圖像底層格式的內容?
經過CFDataRef的進一步檢查,我發現如果我通過緩衝區循環, 對於每行字節:0到1803將從我的映像中正確,然後接下來的20個字節全部爲零。所以這意味着我返回的圖像實際上是作爲一個1824乘1005的圖像而不是1805乘1005而返回。仍然沒有解釋爲什麼。