среда, 20 июля 2011 г.

NSImage Exif (metadata)

Get metadata from NSImage

  1. + (NSDictionary*) exif : (NSString*) file  
  2. {  
  3.     NSDictionary* dic   =   nil;  
  4.       
  5.     NSURL* url          =   [ NSURL fileURLWithPath : file ];  
  6.       
  7.     if ( url )  
  8.     {  
  9.         CGImageSourceRef source = CGImageSourceCreateWithURL ( (CFURLRef) url, NULL);  
  10.           
  11.         if ( NULL == source )   
  12.         {  
  13. #ifdef _DEBUG  
  14.             CGImageSourceStatus status = CGImageSourceGetStatus ( source );  
  15.             NSLog ( @"Error: file name : %@ - Status: %d", file, status );  
  16. #endif            
  17.         }  
  18.         else  
  19.         {             
  20.             CFDictionaryRef metadataRef = 
  21.             CGImageSourceCopyPropertiesAtIndex ( source, 0, NULL );  
  22.             if ( metadataRef )   
  23.             {  
  24.                 NSDictionary* immutableMetadata = (NSDictionary *)metadataRef;  
  25.                 if ( immutableMetadata )  
  26.                 {                 
  27.                     dic =   
  28.                 [ NSDictionary dictionaryWithDictionary : (NSDictionary *)metadataRef ];  
  29.                 }                                          
  30.                   
  31.                 CFRelease ( metadataRef );  
  32.             }  
  33.               
  34.             CFRelease(source);  
  35.             source = nil;  
  36.         }  
  37.     }  
  38.       
  39.     return dic;  
  40. }  

.........................................

  1. NSDictionary* dic = [ User_ImageLoader exif : filename ];  
  2. if ( dic )  
  3. {  
  4.     NSString* s     =   [ dic valueForKey : @"Orientation" ];  
  5.       
  6.     NSLog(@"Image : %@ - orentation : %d", filename, [ s intValue ] );  
  7. }  

LOG


2011-07-21 00:09:44.579 test.app [12105:7f03] Image : /Users/alexey/Desktop/Works/EXIF Orientation Sample Images/7.jpg - orentation : 7
2011-07-21 00:09:45.908 test.app [12105:7f03] Image : /Users/alexey/Desktop/Works/EXIF Orientation Sample Images/8.jpg - orentation : 8

Create CGImageRef with EXIF Orientation