depicus

  just another nerd on the interweb…



  • home
  • gallery
  • play page
  • support
  • videos
  • what is depicus

Getting EXIF data from images on iOS

Author: The Man



Working on a project that needed to show images with their information so looked into extracting EXIF data from the image itself rather than banging it into a db. Note this requires jpg files as png’s didn’t seem to work.

View Code OBJC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    NSString *myPath = [[NSBundle mainBundle] pathForResource:@"IMG_2733" ofType:@"JPG"];
    NSURL *myURL = [NSURL fileURLWithPath:myPath];
    CGImageSourceRef mySourceRef = CGImageSourceCreateWithURL((CFURLRef)myURL, NULL);
    NSDictionary *myMetadata = (NSDictionary *) CGImageSourceCopyPropertiesAtIndex(mySourceRef,0,NULL);
    NSDictionary *exifDic = [myMetadata objectForKey:(NSString *)kCGImagePropertyExifDictionary];
    NSDictionary *tiffDic = [myMetadata objectForKey:(NSString *)kCGImagePropertyTIFFDictionary];
    NSLog(@"exifDic properties: %@", myMetadata); //all data
    float rawShutterSpeed = [[exifDic objectForKey:(NSString *)kCGImagePropertyExifExposureTime] floatValue];
    int decShutterSpeed = (1 / rawShutterSpeed);
    NSLog(@"Camera %@",[tiffDic objectForKey:(NSString *)kCGImagePropertyTIFFModel]);
    NSLog(@"Focal Length %@mm",[exifDic objectForKey:(NSString *)kCGImagePropertyExifFocalLength]);
    NSLog(@"Shutter Speed %@", [NSString stringWithFormat:@"1/%d", decShutterSpeed]);
    NSLog(@"Aperture f/%@",[exifDic objectForKey:(NSString *)kCGImagePropertyExifFNumber]);
    NSNumber *ExifISOSpeed  = [[exifDic objectForKey:(NSString*)kCGImagePropertyExifISOSpeedRatings] objectAtIndex:0];
    NSLog(@"ISO %i",[ExifISOSpeed integerValue]);
    NSLog(@"Taken %@",[exifDic objectForKey:(NSString*)kCGImagePropertyExifDateTimeDigitized]);

Obviously change the image name and be aware that images loaded in a UIImageView seem to have their EXIF data stripped out.

Tweet

Tags: Canon, EXIF

This entry was posted on Saturday, May 7th, 2011 at 11:27 am and is filed under Canon, iOS, Software Development. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

4 Responses to “Getting EXIF data from images on iOS”

July 30th, 2011 at 2:37 am

bob says:

NSLog(@”Shutter Speed %@”, [NSString stringWithFormat:@"1/%d", decShutterSpeed]);

should be written as

NSLog(@”Shutter Speed 1/%d”, decShutterSpeed);

December 31st, 2011 at 8:18 am

Groumfy69 says:

Very useful, thank you! Maybe you should add that the ImageIO.framework is required and you must import both and

April 4th, 2012 at 5:19 pm

leon says:

how can I get the ImageIO.framework ?
I’ve read that it doesn’t exist for iphone!!!! Can anyone show me the way?
I’m pretty new to Iphone dev. I need to extract EXIF geolocation data in my app.

April 4th, 2012 at 6:48 pm

The Man says:

Have a look at the screenshot here which shows where the frameworks are added.

Leave a Reply

  • how i pay the bills

  • google rank getter

    Android Apache Aperture Apple App Store bbPress Bike Bug Canon 7D Code Dell DotNet Dropbox Fail Firefox forum Frustration Golf iPad iPhone iPod Touch Java Kenya Linksys Macbook Pro Netgear Objective C Open Source OSX PHP Rejected Safari Server Skype Support Ubuntu Update WakeOnLan Wake On Lan Wifi Windows Windows 7 Phone Wireshark Wordpress XCode
  • depicus in africa

    depicus in africa
  • friends

    • Agency Manager
    • AllClear Travel
    • Climbing Tikes
    • Globe Bloggers
    • Marchday
    • The Travel Toad
  • gallery

    IMG_4638 IMG_3032 Bisley Developments Ltd Bisley Developments Ltd
  • videos

    Vimeo

    YouTube
  • twitter

    • Holy geekness batman we have an Arduino doing Wake on Lan forwarding programmed in less than 4 hours… amazing - #iamanubergeektoday view
    • Arduino WoLF app coming along nicely view
    • RT @pasm69: On the one hand we are in a #drought says #thameswater, on the other £4.1B to throw rainwater down the #supersewer #itisjust ... view
  • recent comments

    • Sef: Yo, thats 720p @ 60fps. Huge Difference… in file size, processing, everything. DSLRs aren’t there...
    • Finson: Worked..!! Replaced all the InstallOnLHS and InstallOnWinXP with value 0 and the installation completed...
    • Geux: Terminal command didn’t work, but editing the plist manually did the trick. Thanks !!!
    • Nebras Alattar: Hi The code that you posted is very useful, but i faced a problem when i run the app i got the...
    • leon: how can I get the ImageIO.framework ? I’ve read that it doesn’t exist for iphone!!!! Can anyone...
  • archives

    • May 2012 (2)
    • April 2012 (4)
    • February 2012 (8)
    • January 2012 (6)
    • December 2011 (7)
    • November 2011 (1)
    • October 2011 (2)
    • September 2011 (2)
    • August 2011 (4)
    • July 2011 (6)
    • June 2011 (9)
    • May 2011 (8)
    • April 2011 (2)
    • February 2011 (6)
    • January 2011 (14)
    • December 2010 (9)
    • November 2010 (8)
    • October 2010 (14)
    • September 2010 (6)
    • August 2010 (9)
    • July 2010 (1)
    • June 2010 (2)
    • May 2010 (2)
    • April 2010 (2)
    • March 2010 (11)
    • February 2010 (3)

Copyright © - depicus | Entries (RSS) | Comments (RSS)

WordPress theme butchered and amended by me.