Louis Strous
and 1 contributors


Image::Synchronize - a module for synchronizing filesystem modification timestamps of images, movies, and related files.


  use Image::Synchronize;

  $ims = Image::Synchronize->new(%options);


This module is the backend of imsync and was not designed to be used outside of that context.


See the documentation of imsync for more details.


Louis Strous, <imsync@quae.nl<gt>


Copyright (C) 2018 by Louis Strous

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.26.2 or, at your option, any later version of Perl 5 you may have available.



  $ims = Image::Synchronize->new(%options);

Construct and return a new instance of the class. The following %options keys are recognized:


Specifies the file to write the log messages to (in addition to printing them to standard output). If not set, then imsync.log in the current working directory is used.



Processes the specified @arguments, of which the elements are interpreted as path name patterns matching files and/or directories.

Returns $ims.


  $et->get_image_info($file, @tags);

Extract relevant information from the $file, using Image::ExifTool, and returns a reference to a hash map containing the extracted information. The extracted tags are @tags plus the following fixed set of tags:

CameraID =item ImsyncVersion =item FileModifyDate =item ImageWidth =item Make =item MIMEType =item Model =item QuickTime:CreateDate =item SerialNumber =item TimeSource

Some of the requested tags may occur in the embedded information multiple times (for example, once as an EXIF tag and once as an XMP tag). We store all occurrences in the returned map, with keys that consist of the requested tag name with the tag group (= source) name prefixed, separated by a colon (e.g., "Exif:DateTimeOriginal"). Additionally, the preferred occurrence is stored in the map with a key that has only the tag name without the group name (e.g., "DateTimeOriginal").

If the ImageWidth tag is present, then the file is considered to be an image, and then the returned hash map also includes the effective camera ID ("camera_id"), as the value for key effective_camera_id. The ImageWidth tag is omitted from the hash map.

QuickTime images/movies (recognized by there being a QuickTime:CreateDate tag) get '|U' appended to their effective camera ID, and the QuickTime::CreateDate tag is omitted from the hash map.

Each value is stored for the Image::ExifTool tag including the group name, and also for the tag without the group name. If a value occurs in multiple groups (for example EXIF and XMP), then the preferred value is stored for the tag without the group name.