Я загружаю изображение png в градациях серого и хочу получить доступ к данным основного пикселя. Однако после загрузки я получаю данные пикселей через 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. Все еще нет объяснения, почему.