Difference between revisions of "ReNamer:Scripts:Exiv2"
m (Text replacement - "</source>" to "</syntaxhighlight>") |
m (Text replacement - "<source>" to "<syntaxhighlight lang="pascal">") |
||
Line 17: | Line 17: | ||
* Tested with ReNamer 5.74.4 Beta. | * Tested with ReNamer 5.74.4 Beta. | ||
− | < | + | <syntaxhighlight lang="pascal"> |
{ Extract EXIF/IPTC/XMP tags using Exiv2 } | { Extract EXIF/IPTC/XMP tags using Exiv2 } | ||
Line 40: | Line 40: | ||
To extract ''IPTC Headline'' tag, you would need to make following changes: | To extract ''IPTC Headline'' tag, you would need to make following changes: | ||
− | < | + | <syntaxhighlight lang="pascal"> |
EXE = 'exiv2.exe -pi'; | EXE = 'exiv2.exe -pi'; | ||
TAG = 'Iptc.Application2.Headline\s*\w*\s*\d*\s*(.*?)[\r\n]'; | TAG = 'Iptc.Application2.Headline\s*\w*\s*\d*\s*(.*?)[\r\n]'; | ||
Line 53: | Line 53: | ||
* Tested with ReNamer 6.3. | * Tested with ReNamer 6.3. | ||
− | < | + | <syntaxhighlight lang="pascal"> |
const | const | ||
EXIV = 'exiv2.exe'; | EXIV = 'exiv2.exe'; |
Revision as of 15:03, 8 February 2017
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 sample script extracts Image Timestamp, but you can 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 5.74.4 Beta.
{ Extract EXIF/IPTC/XMP tags using Exiv2 }
const
EXE = 'exiv2.exe';
TAG = 'Image timestamp\s*\:\s*(.*?)[\r\n]';
var
Command, Output: String;
Matches: TWideStringArray;
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: TWideStringArray;
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.