• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Retrieving the EXIF date/time from 250k images
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Retrieving the EXIF date/time from 250k images


  • Subject: Retrieving the EXIF date/time from 250k images
  • From: Gabriel Zachmann via Cocoa-dev <email@hidden>
  • Date: Sun, 14 Aug 2022 23:22:17 +0200

I would like to collect the date/time stored in an EXIF tag in a bunch of
images.

I thought I could do so with the following procedure
(some details and error checking omitted for sake of clarity):


    NSMutableArray * dates_and_times = [NSMutableArray arrayWithCapacity:
[imagefiles count]];
    CFDictionaryRef exif_dict;
    CFStringRef dateref = NULL;
    for ( NSString* filename in imagefiles )
    {
        NSURL * imgurl = [NSURL fileURLWithPath: filename isDirectory: NO];
// escapes any chars that are not allowed in URLs (space, &, etc.)
        CGImageSourceRef image = CGImageSourceCreateWithURL( (__bridge
CFURLRef) imgurl, NULL );
        CFDictionaryRef fileProps = CGImageSourceCopyPropertiesAtIndex( image,
0, NULL );
        bool success = CFDictionaryGetValueIfPresent( fileProps,
kCGImagePropertyExifDictionary, (const void **) & exif_dict );
        success = CFDictionaryGetValueIfPresent( exif_dict,
kCGImagePropertyExifDateTimeDigitized, (const void **) & dateref );
        NSString * date_str = [[NSString alloc] initWithString: (__bridge
NSString * _Nonnull)( dateref ) ];
        NSDate * iso_date = [isoDateFormatter_ dateFromString: date_str];
        if ( iso_date )
             [dates_and_times addObject: iso_date ];
        CFRelease( fileProps );
    }


But, I get the impression, this code actually loads each and every image.
On my Macbook, it takes 3m30s for 250k images (130GB).

So, the big question is: can it be done faster?

I know the EXIF tags are part of the image file, but I was hoping it might be
possible to load only those EXIF dictionaries.
Or are the CGImage functions above already clever enough to implement this idea?


Best regards, Gab.


Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Retrieving the EXIF date/time from 250k images
      • From: Steve Christensen via Cocoa-dev <email@hidden>
    • Re: Retrieving the EXIF date/time from 250k images
      • From: "Gary L. Wade via Cocoa-dev" <email@hidden>
  • Next by Date: Re: Retrieving the EXIF date/time from 250k images
  • Next by thread: Re: Retrieving the EXIF date/time from 250k images
  • Index(es):
    • Date
    • Thread