Получение растровых данных из изображения JPEG с использованием какао - PullRequest
3 голосов
/ 20 декабря 2011

Мне нужно извлечь необработанные данные растрового изображения RGB из файла JPEG или PNG со всеми битами в файле, а не в версии с преобразованием окна или цвета.

Я новичок в Какао, но похоже, что я открываю изображение, используя NSImage, вот так:

NSString* imageName=[[NSBundle mainBundle] pathForResource:@"/Users/me/Temp/oxberry.jpg" ofType:@"JPG"];
NSImage*  tempImage=[[NSImage alloc] initWithContentsOfFile:imageName];
NSBitmapImageRep* imageRep=[[[NSBitmapImageRep alloc] initWithData:[tempImage TIFFRepresentation]] autorelease];
unsigned char* bytes=[imageRep bitmapData];
int bits=[imageRep bitsPerPixel];

Затем, чтобы получить растровые данные, кажется, есть много вариантов: Bitmapimage, CGImage и т. Д.

Какой самый простой подход, и если бы был фрагмент кода, это было бы здорово.

Спасибо!

1 Ответ

3 голосов
/ 20 декабря 2011

Вы на правильном пути. Как вы заметили, есть много способов сделать это.

Получив NSImage, вы можете создать растровое представление и получить прямой доступ к его байтам. Простой способ получить NSBitmapImageRep - это сделать:

NSBitmapImageRep* imageRep = [[[NSBitmapImageRep alloc] initWithData:[tempImage TIFFRepresentation]] autorelease];

unsigned char* bytes = [imageRep bitmapData];
int bitsPerPixel  = [imageRep bitsPerPixel];
// etc

Прохождение шага TIFFRepresentation более безопасно, чем прямой доступ к представлениям NSImage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...