我正在加载灰度png图像,我想访问基础像素数据.然而,在我通过CGImageGetDataProvider加载获取像素数据后,返回的数据长度超过预期.
CCGDataProviderRef provider = CGDataProviderCreateWithFilename(cStr);
CGImageRef image = CGImageCreateWithPNGDataProvider(provider, NULL, FALSE, kCGRenderingIntentDefault);
mapWidth = CGImageGetWidth(image);
mapHeight = CGImageGetHeight(image);
lookupMap = CGDataProviderCopyData(CGImageGetDataProvider(image));
Run Code Online (Sandbox Code Playgroud)
mapWidth出现在1804,mapHeight出现在1005.其产品是1813020
我打电话的时候
CFDataGetLength(lookupMap)
Run Code Online (Sandbox Code Playgroud)
回复是1833120.
这些额外的20100字节来自哪里?这里的任何帮助非常感谢.我错过了关于图像底层格式的一些内容吗?
在进一步检查CFDataRef时,我发现如果我遍历缓冲区,对于每一行字节:0到1803将从我的图像中正确,然后接下来的20个字节全部为零.所以这意味着我的返回图像实际上是以1824×1005图像而不是1804乘1005返回.仍然没有解释为什么.