Попытка получить значение цвета пикселя

Я пытаюсь прочитать значение цвета пикселя в TIF-изображении, но не могу найти правильный способ сделать это. Я использую OSX, и мой подход заключается в следующем:

NSImage *picture = [[NSImage alloc] initWithContentsOfFile:@"bais2.tif"]; //file is located in resoureces folder.
NSBitmapImageRep *imageRep = [[picture representations] objectAtIndex:0];

NSColor* color = [imageRep colorAtX:10 y:10];
NSLog(@"%f %f, %f", [color redComponent], [color blueComponent], [color greenComponent]);

Проблема в том, что по каким-то причинам зарегистрированные значения в NSLog всегда становятся 0,0000000....

Я также попытался использовать:

NSBitmapImageRep* imageRep = [[NSBitmapImageRep alloc] initWithData:[picture TIFFRepresentation]];

вместо [[picture representations] objectAtIndex:0] но результат тот же.

Я не получаю сообщений об ошибках или предупреждений, но я думаю, что что-то не так, когда я загружаю картинку? Пожалуйста, помогите мне, что я делаю не так? И есть ли лучший способ прочитать данные о цвете пикселей?

2 ответа

Ваша ошибка здесь:

NSImage *picture = [[NSImage alloc] initWithContentsOfFile:@"bais2.tif"];
-------------------------------------------------------------------^^^^

Ты можешь использовать:

NSImage *picture= [NSImage imageNamed:@"bais2.tiff"];

Или же:

NSImage *picture = [[NSImage alloc] initWithContentsOfFile:@"bais2.tiff"];
 NSData *someNSData = [Image TIFFRepresentation];
 NSBitmapImageRep *someNSBitmapImageRepData = [[NSBitmapImageRep alloc] initWithData:someNSData];
 NSSize imageSizee = [someNSBitmapImageRepData size];

 CGFloat y = imageSize.height - 100.0;
 NSColor* color = [someNSBitmapImageRepData colorAtX:100.0 y:y];

 NSLog(@"color = %@",color);

вывод: color = NSCalibratedRGBColorSpace 1 1 1 1

Другие вопросы по тегам