小编jco*_*lan的帖子

从CGImageGetDataProvider返回的数据长度大于预期

我正在加载灰度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返回.仍然没有解释为什么.

iphone image cgimage iphone-sdk-3.0

5
推荐指数
1
解决办法
996
查看次数

标签 统计

cgimage ×1

image ×1

iphone ×1

iphone-sdk-3.0 ×1