2011-12-20 2 views
3

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

Я новичок в какао, но это выглядит, как я открываю изображение с помощью 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 и т.д. .

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

Спасибо!

ответ

3

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

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

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

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

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

+0

Спасибо за помощь, но по какой-либо причине изображение не загружается, или BitmapImageRep не работает, так как я получаю 0 для bitsPerPixel. Как я могу увидеть, загружен ли образ (Извините, поскольку я очень новичок на ногах какао). Я отредактировал код в своем исходном сообщении, чтобы отразить изменения. – Bill

+0

Я выяснил, как его проверить, но все равно не может загружать изображение. Файл существует в этой папке. – Bill

+0

, если вы выполните код в отладчике, вы сможете увидеть, что происходит. Если он не загружает изображение, tempImage будет nil. И т. Д. Отладчик - ваш друг. –

Смежные вопросы