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而返回。仍然没有解释为什么。