Difference between revisions of "ReNamer:Scripts:Exiv2"
(Navigation) |
(Tested versions of ReNamer) |
||
Line 4: | Line 4: | ||
== Requirements == | == Requirements == | ||
− | + | ||
− | * [http://www.exiv2.org/download.html exiv2.exe] | + | * [http://www.exiv2.org/download.html exiv2.exe] in ReNamer's folder |
== Code 1 == | == Code 1 == | ||
− | Author: Denis Kozlov. Date: 2013-04-01. Extract unformatted line out of the command line output of the <code>exiv2.exe</code> tool. This script extracts ''Image Timestamp''. Adjust <code>EXIV</code> and <code>TAG</code> constants to extract other tags. | + | Author: Denis Kozlov. Date: 2013-04-01. |
+ | |||
+ | Extract unformatted line out of the command line output of the <code>exiv2.exe</code> tool. This script extracts ''Image Timestamp''. Adjust <code>EXIV</code> and <code>TAG</code> constants to extract other tags. | ||
'''Hint:''' ''Image Timestamp'' value is usually formatted as "yyyy:mm:dd hh:mm:ss" which contains an illegal filename character ":". The illegal character can be easily replaced using an additional Replace rule. | '''Hint:''' ''Image Timestamp'' value is usually formatted as "yyyy:mm:dd hh:mm:ss" which contains an illegal filename character ":". The illegal character can be easily replaced using an additional Replace rule. | ||
+ | |||
+ | * Tested with ReNamer v5.70. | ||
<source> | <source> | ||
Line 43: | Line 47: | ||
== Code 2 == | == Code 2 == | ||
− | Author: Denis Kozlov. Date: 2015-11-25. Extract EXIF date and reformat it according to user specification (< | + | Author: Denis Kozlov. Date: 2015-11-25. |
+ | |||
+ | Extract EXIF date and reformat it according to user specification (<code>DATE_FORMAT</code> constant). | ||
+ | |||
+ | * Tested with ReNamer 6.3. | ||
<source> | <source> |
Revision as of 14:39, 25 November 2015
Script integrates Exiv2 library in order to extract EXIF/IPTC/XMP tags from many types of images. CRW, CR2, RAW images are also supported.
Requirements
- exiv2.exe in ReNamer's folder
Code 1
Author: Denis Kozlov. Date: 2013-04-01.
Extract unformatted line out of the command line output of the exiv2.exe
tool. This script extracts Image Timestamp. Adjust EXIV
and TAG
constants to extract other tags.
Hint: Image Timestamp value is usually formatted as "yyyy:mm:dd hh:mm:ss" which contains an illegal filename character ":". The illegal character can be easily replaced using an additional Replace rule.
- Tested with ReNamer v5.70.
{ Extract EXIF/IPTC/XMP tags using Exiv2 }
const
EXE = 'exiv2.exe';
TAG = 'Image timestamp\s*\:\s*(.*?)[\r\n]';
var
Command, Output: String;
Matches: TStringsArray;
begin
Command := EXE+' "'+FilePath+'"';
if ExecConsoleApp(Command, Output) = 0 then
begin
Matches := SubMatchesRegEx(Output, TAG, False);
if Length(Matches) > 0 then
FileName := Matches[0] + WideExtractFileExt(FileName);
end;
end.
To extract IPTC Headline tag, you would need to make following changes:
EXE = 'exiv2.exe -pi';
TAG = 'Iptc.Application2.Headline\s*\w*\s*\d*\s*(.*?)[\r\n]';
Code 2
Author: Denis Kozlov. Date: 2015-11-25.
Extract EXIF date and reformat it according to user specification (DATE_FORMAT
constant).
- Tested with ReNamer 6.3.
const
EXIV = 'exiv2.exe';
DATE_TAG = 'Image timestamp\s*\:\s*(.*?)[\r\n]';
DATE_PARTS = '(.+)\:(.+)\:(.+)\ (.+)\:(.+)\:(.+)';
DATE_FORMAT = 'YYYY-MM-DD HH.NN.SS';
var
Command, Output: String;
Matches, DateParts: TStringsArray;
Year, Month, Day, Hours, Minutes, Seconds: Integer;
Date: TDateTime;
DateOK: Boolean;
begin
Command := EXIV + ' "' + FilePath + '"';
if ExecConsoleApp(Command, Output) = 0 then
begin
Matches := SubMatchesRegEx(Output, DATE_TAG, False);
if Length(Matches) > 0 then
begin
DateParts := SubMatchesRegEx(Matches[0], DATE_PARTS, False);
if Length(DateParts) > 0 then
begin
DateOK :=
TryStrToInt(DateParts[0], Year) and TryStrToInt(DateParts[1], Month) and
TryStrToInt(DateParts[2], Day) and TryStrToInt(DateParts[3], Hours) and
TryStrToInt(DateParts[4], Minutes) and TryStrToInt(DateParts[5], Seconds);
if DateOK then
begin
Date := EncodeDateTime(Year, Month, Day, Hours, Minutes, Seconds, 0);
FileName := FormatDateTime(DATE_FORMAT, Date) + WideExtractFileExt(FileName);
end;
end;
end;
end;
end.