Я загружаю черно-белое изображение 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 вместо 1804 на 1005. По-прежнему нет объяснений, почему.