2013-09-26 3 views
0

У меня есть проект, в котором мне нужно манипулировать некоторыми необработанными данными из созданного образа, который находится в формате .tiff. У меня только доступ к местоположению изображения. Теперь я хочу извлечь некоторую необработанную информацию из изображения, например, количество пикселей на изображении, нет. бит на пиксель, нет. цветных компонентов и т. д.Как извлечь необработанные данные из образа .tiff в Objective-C

Я работаю над проектом на MAC OS и поэтому, чтобы поговорить с Apple API, используется Objective-C.

Может кто-нибудь предложить некоторые методы или некоторые API Apple, если это возможно, что может помочь мне в извлечении желаемого из изображения?

P.S .: Я фактически предпочел .tiff формат, так как .jpeg - сжатие с потерями.

ответ

3

Возможно, этот код вам немного поможет, NSImage уже содержит ширину и высоту, поэтому вы можете подсчитать количество пикселей.

NSImage *image = [[NSImage alloc] initWithContentsOfFile:[@"~/Desktop/image.tiff" stringByExpandingTildeInPath]]; 
NSData *imageData = [image TIFFRepresentation]; 
CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef)CFBridgingRetain(imageData), NULL); 
CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, 0, NULL); 
NSUInteger numberOfBitsPerPixel = CGImageGetBitsPerPixel(imageRef); 
NSLog(@"Number Of Bits Per Pixel %lu", (unsigned long)numberOfBitsPerPixel); 
+0

+1 Спасибо за ответ .. это работает. Не могли бы вы также рассказать мне, как я могу извлечь информацию 'pixelDataType' из этого' NSData' или 'NSImage'? – Sankalp

+0

Как уже упоминалось [здесь] (http://uri-labs.com/macosx_headers/ICScannerBandData_h/index.html#//apple_ref/c/func/property_DONTLINK_12) – Sankalp

+0

Также, как я могу получить количество строк на изображении? – Sankalp