Попытка получить значение цвета пикселя
Я пытаюсь прочитать значение цвета пикселя в 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