Длина данных, возвращенных из CGImageGetDataProvider, больше, чем ожидалось

Я загружаю шкалу полутонов 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 выходит к 1 005. Продукт которого 1813020

Когда я звоню

CFDataGetLength(lookupMap)

ответ 1833120.

Куда эти дополнительные 20 100 байтов прибывают из? Любая справка здесь очень ценится. Я пропускаю что-то о базовом формате изображения?

После дальнейшего исследования CFDataRef я нашел это, если я циклично выполняюсь через буфер для каждой строки байты: от 0 до 1803 будет корректно из моего изображения, и затем следующие 20 байтов являются всем нулем. Таким образом, это означает, что мое возвращенное изображение на самом деле возвращается как 1824 1 005 изображениями вместо 1804 1 005. Все еще никакое объяснение, относительно почему.

5
задан BJ Homer 26 June 2013 в 22:09
поделиться