Чтение изображения (стандартный формат png, jpeg и т. Д.) И запись данных изображения в двоичный файл с использованием Objective C - PullRequest
0 голосов
/ 17 августа 2011

Я довольно новичок в Objective C и работаю с Cocoa Framework. Я хочу прочитать изображение, а затем извлечь данные изображения (только данные пикселей, а не заголовок), а затем записать данные в двоичный файл. Я как бы застрял с этим, я пробовал методы NSImage, но я не мог найти подходящий. Может кто-нибудь предложить мне другие способы сделать это?

1 Ответ

0 голосов
/ 18 августа 2011

С точки зрения какао, самый простой подход - использовать класс NSBitmapImageRep.Например, после инициализации объектом NSData вы можете получить доступ к значению цвета по любой координате как объект NSColor, используя методы -setColor:atX:y: и -colorAtX:y:.Обратите внимание, что если вы вызываете эти методы в тесных циклах, вы можете потерять производительность от objc_msg_send.Вы можете рассмотреть доступ к необработанным растровым данным в виде массива C с помощью метода -bitmapData.Например, при работе с изображением RGB значения цвета для каждого канала сохраняются со смещением 3.

Например:

color values: [R,G,B][R,G,B][R,G,B]
     indices: [0,1,2, 3,4,5, 6,7,8]

Для циклического прохождения каждого пикселя изображения иизвлечь компоненты RGB:

unsigned char *bitmapData = [bitmapRep bitmapData];

if ([bitmapRep samplesPerPixel] == 3) {
    for (i = 0; i < [image size].width * [image size].height; i++) {
        int base = (i * 3);

        // these range from 0-255
        unsigned char red = bitmapData[base + 0];
        unsigned char green = bitmapData[base + 1];
        unsigned char blue = bitmapData[base + 2];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...