exiftool_vendored 13.10.0 → 13.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +33 -0
- data/bin/MANIFEST +1 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/exiftool +206 -148
- data/bin/lib/File/RandomAccess.pm +1 -1
- data/bin/lib/File/RandomAccess.pod +2 -2
- data/bin/lib/Image/ExifTool/AAC.pm +1 -1
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/APE.pm +1 -1
- data/bin/lib/Image/ExifTool/APP12.pm +1 -1
- data/bin/lib/Image/ExifTool/ASF.pm +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +1 -1
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BPG.pm +1 -1
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -6
- data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +8 -4
- data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +1 -1
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +96 -45
- data/bin/lib/Image/ExifTool/DNG.pm +1 -1
- data/bin/lib/Image/ExifTool/DPX.pm +1 -1
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +123 -32
- data/bin/lib/Image/ExifTool/Exif.pm +7 -4
- data/bin/lib/Image/ExifTool/FITS.pm +1 -1
- data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/Font.pm +1 -1
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- data/bin/lib/Image/ExifTool/GM.pm +1 -1
- data/bin/lib/Image/ExifTool/GPS.pm +1 -1
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ICO.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +1 -1
- data/bin/lib/Image/ExifTool/IPTC.pm +8 -5
- data/bin/lib/Image/ExifTool/ISO.pm +1 -1
- data/bin/lib/Image/ExifTool/ITC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +5 -4
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/JVC.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/LIF.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- data/bin/lib/Image/ExifTool/LigoGPS.pm +408 -0
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +22 -13
- data/bin/lib/Image/ExifTool/MIE.pm +1 -1
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/MISB.pm +1 -1
- data/bin/lib/Image/ExifTool/MNG.pm +1 -1
- data/bin/lib/Image/ExifTool/MOI.pm +1 -1
- data/bin/lib/Image/ExifTool/MPC.pm +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MPF.pm +1 -1
- data/bin/lib/Image/ExifTool/MRC.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +12 -4
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +164 -35
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/Other.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +1 -1
- data/bin/lib/Image/ExifTool/PDF.pm +1 -1
- data/bin/lib/Image/ExifTool/PGF.pm +1 -1
- data/bin/lib/Image/ExifTool/PICT.pm +1 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +1 -1
- data/bin/lib/Image/ExifTool/PPM.pm +1 -1
- data/bin/lib/Image/ExifTool/PSP.pm +1 -1
- data/bin/lib/Image/ExifTool/Palm.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +20 -2
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Protobuf.pm +24 -14
- data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +46 -17
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -302
- data/bin/lib/Image/ExifTool/README +4 -0
- data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +1 -1
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- data/bin/lib/Image/ExifTool/Red.pm +1 -1
- data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +1 -1
- data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- data/bin/lib/Image/ExifTool/Stim.pm +1 -1
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +11 -5
- data/bin/lib/Image/ExifTool/TagNames.pod +84 -34
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +1 -1
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WPG.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -3
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +9 -8
- data/bin/lib/Image/ExifTool/XISF.pm +1 -1
- data/bin/lib/Image/ExifTool/XMP.pm +1 -1
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +13 -7
- data/bin/lib/Image/ExifTool.pod +14 -5
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '13.
|
14
|
+
my $version = '13.12';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
my $exePath;
|
@@ -641,7 +641,7 @@ for (;;) {
|
|
641
641
|
}
|
642
642
|
# require MWG module if used in any argument
|
643
643
|
# (note: doesn't cover the -p option because these tags will be parsed on the 2nd pass)
|
644
|
-
$useMWG = 1 if not $useMWG and grep /^mwg:/i, @tags, @requestTags;
|
644
|
+
$useMWG = 1 if not $useMWG and grep /^([--_0-9A-Z]+:)*1?mwg:/i, @tags, @requestTags;
|
645
645
|
if ($useMWG) {
|
646
646
|
require Image::ExifTool::MWG;
|
647
647
|
Image::ExifTool::MWG::Load();
|
@@ -1093,7 +1093,7 @@ for (;;) {
|
|
1093
1093
|
# prevent processing file unnecessarily for simple case of failed '$ok' or 'not $ok'
|
1094
1094
|
$cond =~ /^\s*(not\s*)\$ok\s*$/i and ($1 xor $rtnValPrev) and $failCondition=1;
|
1095
1095
|
# add to list of requested tags
|
1096
|
-
push @requestTags, $cond =~ /\$\{?((?:[
|
1096
|
+
push @requestTags, $cond =~ /\$\{?((?:[-_0-9A-Z]+:)*[-_0-9A-Z?*]+)/ig;
|
1097
1097
|
push @condition, $cond;
|
1098
1098
|
next;
|
1099
1099
|
}
|
@@ -1181,7 +1181,7 @@ for (;;) {
|
|
1181
1181
|
if ($pass) {
|
1182
1182
|
LoadPrintFormat($fmt, $1 || $binaryOutput);
|
1183
1183
|
# load MWG module now if necessary
|
1184
|
-
if (not $useMWG and grep /^mwg:/i, @requestTags) {
|
1184
|
+
if (not $useMWG and grep /^([-_0-9A-Z]+:)*1?mwg:/i, @requestTags) {
|
1185
1185
|
$useMWG = 1;
|
1186
1186
|
require Image::ExifTool::MWG;
|
1187
1187
|
Image::ExifTool::MWG::Load();
|
@@ -1380,11 +1380,11 @@ for (;;) {
|
|
1380
1380
|
push @newValues, { SaveCount => ++$saveCount };
|
1381
1381
|
}
|
1382
1382
|
push @newValues, $_;
|
1383
|
-
if (/^mwg:/i) {
|
1383
|
+
if (/^([-_0-9A-Z]+:)*1?mwg:/i) {
|
1384
1384
|
$useMWG = 1;
|
1385
|
-
} elsif (/^([
|
1385
|
+
} elsif (/^([-_0-9A-Z]+:)*(filename|directory|testname)\b/i) {
|
1386
1386
|
$doSetFileName = 1;
|
1387
|
-
} elsif (/^([
|
1387
|
+
} elsif (/^([-_0-9A-Z]+:)*(geotag|geotime|geosync|geolocate)\b/i) {
|
1388
1388
|
if (lc $2 eq 'geotime') {
|
1389
1389
|
$addGeotime = '';
|
1390
1390
|
} else {
|
@@ -1402,25 +1402,23 @@ for (;;) {
|
|
1402
1402
|
if ($setTagsFile) {
|
1403
1403
|
push @{$setTags{$setTagsFile}}, $_;
|
1404
1404
|
if ($1 eq '>') {
|
1405
|
-
$useMWG = 1 if /^(.*>\s*)?mwg:/si;
|
1405
|
+
$useMWG = 1 if /^(.*>\s*)?([-_0-9A-Z]+:)*1?mwg:/si;
|
1406
1406
|
if (/\b(filename|directory|testname)#?$/i) {
|
1407
1407
|
$doSetFileName = 1;
|
1408
1408
|
} elsif (/\bgeotime#?$/i) {
|
1409
1409
|
$addGeotime = '';
|
1410
1410
|
}
|
1411
1411
|
} else {
|
1412
|
-
$useMWG = 1 if /^([^<]+<\s*(.*\$\{?)?)?mwg:/si;
|
1413
|
-
if (/^([
|
1412
|
+
$useMWG = 1 if /^([^<]+<\s*(.*\$\{?)?)?([-_0-9A-Z]+:)*1?mwg:/si;
|
1413
|
+
if (/^([-_0-9A-Z]+:)*(filename|directory|testname)\b/i) {
|
1414
1414
|
$doSetFileName = 1;
|
1415
|
-
} elsif (/^([
|
1415
|
+
} elsif (/^([-_0-9A-Z]+:)*geotime\b/i) {
|
1416
1416
|
$addGeotime = '';
|
1417
1417
|
}
|
1418
1418
|
}
|
1419
1419
|
} else {
|
1420
1420
|
my $lst = s/^-// ? \@exclude : \@tags;
|
1421
|
-
unless
|
1422
|
-
Warn(qq(Invalid TAG name: "$_"\n));
|
1423
|
-
}
|
1421
|
+
Warn(qq(Invalid TAG name: "$_"\n)) unless /^([-_0-9A-Z*]+:)*([-_0-9A-Z*?]+)#?$/i;
|
1424
1422
|
push @$lst, $_; # (push everything for backward compatibility)
|
1425
1423
|
}
|
1426
1424
|
}
|
@@ -1763,9 +1761,11 @@ if (@newValues) {
|
|
1763
1761
|
$wrn and Warning($mt, $wrn);
|
1764
1762
|
}
|
1765
1763
|
# exclude specified tags
|
1766
|
-
|
1767
|
-
|
1768
|
-
|
1764
|
+
unless ($csv) {
|
1765
|
+
foreach (@exclude) {
|
1766
|
+
$mt->SetNewValue($_, undef, Replace => 2);
|
1767
|
+
$needSave = 1;
|
1768
|
+
}
|
1769
1769
|
}
|
1770
1770
|
unless ($isWriting or $outOpt or @tags) {
|
1771
1771
|
Warn "Nothing to do.\n";
|
@@ -2296,6 +2296,10 @@ sub GetImageInfo($$)
|
|
2296
2296
|
$et->Options(Duplicates => 1, Sort => "Group$showGroup", Verbose => 0);
|
2297
2297
|
$et2 = Image::ExifTool->new;
|
2298
2298
|
$et2->Options(%{$$et{OPTIONS}});
|
2299
|
+
# must set list options specifically because they may have been
|
2300
|
+
# set incorrectly from deprecated List settings
|
2301
|
+
$et2->Options(ListSep => $$et{OPTIONS}{ListSep});
|
2302
|
+
$et2->Options(ListSplit => $$et{OPTIONS}{ListSplit});
|
2299
2303
|
@found2 = @foundTags;
|
2300
2304
|
$info2 = $et2->ImageInfo($file2, \@found2);
|
2301
2305
|
} else {
|
@@ -2352,14 +2356,15 @@ sub GetImageInfo($$)
|
|
2352
2356
|
|
2353
2357
|
# print differences if requested
|
2354
2358
|
if (defined $diff) {
|
2355
|
-
my (%done2, $wasDiff, @diffs, @groupTags2);
|
2359
|
+
my (%done, %done2, $wasDiff, @diffs, @groupTags2);
|
2356
2360
|
my $v = $verbose || 0;
|
2357
2361
|
print $fp "======== diff < $file > $file2\n";
|
2358
2362
|
my ($g2, $same) = (0, 0); # start with $g2 false, but not equal to '' to avoid infinite loop
|
2359
2363
|
for (;;) {
|
2364
|
+
my ($g, $tag2, $i, $key, @dupl, $val2, $t2, $equal, %used);
|
2360
2365
|
my $tag = shift @foundTags;
|
2361
|
-
my ($g, $tag2);
|
2362
2366
|
if (defined $tag) {
|
2367
|
+
$done{$tag} = 1;
|
2363
2368
|
$g = $et->GetGroup($tag, $showGroup);
|
2364
2369
|
} else {
|
2365
2370
|
for (;;) {
|
@@ -2369,7 +2374,6 @@ sub GetImageInfo($$)
|
|
2369
2374
|
}
|
2370
2375
|
}
|
2371
2376
|
if ($g ne $g2) {
|
2372
|
-
my $t2;
|
2373
2377
|
# add any outstanding tags from diff file not yet handled in previous group ($g2)
|
2374
2378
|
foreach $t2 (@groupTags2) {
|
2375
2379
|
next if $done2{$t2};
|
@@ -2408,33 +2412,50 @@ sub GetImageInfo($$)
|
|
2408
2412
|
my $val = $et->GetValue($tag);
|
2409
2413
|
next unless defined $val; # (just in case)
|
2410
2414
|
my $name = GetTagName($tag);
|
2411
|
-
|
2415
|
+
my $desc = $outFormat < 1 ? $et->GetDescription($tag) : $name;
|
2416
|
+
# get matching tag key(s) from diff file
|
2412
2417
|
my @tags2 = grep /^$name( |$)/, @groupTags2;
|
2413
|
-
|
2414
|
-
my ($val2, $t2);
|
2415
|
-
foreach $t2 (@tags2) {
|
2418
|
+
T2: foreach $t2 (@tags2) {
|
2416
2419
|
next if $done2{$t2};
|
2417
2420
|
$tag2 = $t2;
|
2418
2421
|
$val2 = $et2->GetValue($t2);
|
2422
|
+
next unless defined $val2;
|
2423
|
+
IsEqual($val, $val2) and $equal = 1, last;
|
2424
|
+
# look ahead for upcoming duplicate tags in this group to see
|
2425
|
+
# if any would later match this value (and skip those for now)
|
2426
|
+
if ($$et{DUPL_TAG}{$name} and not @dupl) {
|
2427
|
+
for ($i=0, $key=$name; $i<=$$et{DUPL_TAG}{$name}; ++$i, $key="$name ($i)") {
|
2428
|
+
push @dupl, $key unless $done{$key} or $g ne $et->GetGroup($key, $showGroup);
|
2429
|
+
}
|
2430
|
+
@dupl = sort { $$et{FILE_ORDER}{$a} <=> $$et{FILE_ORDER}{$b} } @dupl if @dupl > 1;
|
2431
|
+
}
|
2432
|
+
foreach (@dupl) {
|
2433
|
+
next if $used{$_};
|
2434
|
+
my $v = $et->GetValue($_);
|
2435
|
+
next unless defined($v) and IsEqual($v, $val2);
|
2436
|
+
$used{$_} = 1; # would match this upcoming tag
|
2437
|
+
undef($tag2); undef($val2);
|
2438
|
+
next T2;
|
2439
|
+
}
|
2419
2440
|
last;
|
2420
2441
|
}
|
2421
|
-
if (
|
2442
|
+
if ($equal) {
|
2422
2443
|
++$same;
|
2423
2444
|
} else {
|
2424
|
-
my $len = LengthUTF8($
|
2445
|
+
my $len = LengthUTF8($desc);
|
2425
2446
|
my $pad = $outFormat < 2 ? ' ' x ($len < 32 ? 32 - $len : 0) : '';
|
2426
2447
|
if ($allGroup) {
|
2427
2448
|
my $grp = "[$g]";
|
2428
2449
|
$grp .= ' ' x (15 - length($grp)) if length($grp) < 15 and $outFormat < 2;
|
2429
|
-
push @diffs, sprintf "< %s %s%s: %s\n", $grp, $
|
2450
|
+
push @diffs, sprintf "< %s %s%s: %s\n", $grp, $desc, $pad, Printable($val);
|
2430
2451
|
if (defined $val2) {
|
2431
|
-
$grp = ' ' x length($grp), $
|
2432
|
-
push @diffs, sprintf "> %s %s%s: %s\n", $grp, $
|
2452
|
+
$grp = ' ' x length($grp), $desc = ' ' x $len if $v < 3;
|
2453
|
+
push @diffs, sprintf "> %s %s%s: %s\n", $grp, $desc, $pad, Printable($val2);
|
2433
2454
|
}
|
2434
2455
|
} else {
|
2435
|
-
push @diffs, sprintf "< %s%s: %s\n", $
|
2436
|
-
$
|
2437
|
-
push @diffs, sprintf "> %s%s %s\n", $
|
2456
|
+
push @diffs, sprintf "< %s%s: %s\n", $desc, $pad, Printable($val);
|
2457
|
+
$desc = ' ' x $len if $v < 3;
|
2458
|
+
push @diffs, sprintf "> %s%s %s\n", $desc, $pad, Printable($val2) if defined $val2;
|
2438
2459
|
}
|
2439
2460
|
}
|
2440
2461
|
$done2{$tag2} = 1 if defined $tag2;
|
@@ -3147,7 +3168,7 @@ sub SetImageInfo($$$)
|
|
3147
3168
|
next;
|
3148
3169
|
} elsif (ref $dyFile eq 'SCALAR') {
|
3149
3170
|
# set new values from CSV or JSON database
|
3150
|
-
my ($f, $found, $
|
3171
|
+
my ($f, $found, $csvTag, $tryTag, $tg);
|
3151
3172
|
undef $evalWarning;
|
3152
3173
|
local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };
|
3153
3174
|
# force UTF-8 if the database was JSON
|
@@ -3169,11 +3190,39 @@ sub SetImageInfo($$$)
|
|
3169
3190
|
print $vout 'Including tags: ',join(' ',@tags),"\n" if @tags;
|
3170
3191
|
print $vout 'Excluding tags: ',join(' ',@exclude),"\n" if @exclude;
|
3171
3192
|
}
|
3172
|
-
|
3173
|
-
|
3174
|
-
|
3175
|
-
|
3176
|
-
|
3193
|
+
my @tryTags = (@exclude, @tags); # (exclude first because it takes priority)
|
3194
|
+
foreach (@tryTags) {
|
3195
|
+
tr/-0-9a-zA-Z_:#?*//dc; # remove illegal characters
|
3196
|
+
s/(^|:)(all:)+/$1/ig; # remove 'all' group names
|
3197
|
+
s/(^|:)all(#?)$/$1*$2/i; # convert 'all' tag name to '*'
|
3198
|
+
tr/?/./; s/\*/.*/g; # convert wildcards for regex
|
3199
|
+
}
|
3200
|
+
foreach $csvTag (OrderedKeys($csvInfo)) {
|
3201
|
+
# don't write SourceFile, Directory or FileName
|
3202
|
+
next if $csvTag =~ /^([-_0-9A-Z]+:)*(SourceFile|Directory|FileName)$/i;
|
3203
|
+
if (@tryTags) {
|
3204
|
+
my ($i, $tryGrp, $matched);
|
3205
|
+
TryMatch: for ($i=0; $i<@tryTags; ++$i) {
|
3206
|
+
$tryTag = $tryTags[$i];
|
3207
|
+
if ($tryTag =~ /:/) {
|
3208
|
+
next unless $csvTag =~ /:/; # db entry must also specify group
|
3209
|
+
my @csvGrps = split /:/, $csvTag;
|
3210
|
+
my @tryGrps = split /:/, $tryTag;
|
3211
|
+
my $tryName = pop @tryGrps;
|
3212
|
+
next unless pop(@csvGrps) =~ /^$tryName$/i; # tag name must match
|
3213
|
+
foreach $tryGrp (@tryGrps) {
|
3214
|
+
# each specified group name must match db entry
|
3215
|
+
next TryMatch unless grep /^$tryGrp$/i, @csvGrps;
|
3216
|
+
}
|
3217
|
+
$matched = 1;
|
3218
|
+
last;
|
3219
|
+
}
|
3220
|
+
# no group specified, so match by tag name only
|
3221
|
+
$csvTag =~ /^([-_0-9A-Z]+:)*$tryTag$/i and $matched = 1, last;
|
3222
|
+
}
|
3223
|
+
next if $matched ? $i < @exclude : @tags;
|
3224
|
+
}
|
3225
|
+
my ($rtn, $wrn) = $et->SetNewValue($csvTag, $$csvInfo{$csvTag},
|
3177
3226
|
Protected => 1, AddValue => $csvAdd,
|
3178
3227
|
ProtectSaved => $csvSaveCount);
|
3179
3228
|
$wrn and Warn "$wrn\n" if $verbose;
|
@@ -4363,7 +4412,7 @@ sub AddPrintFormat($)
|
|
4363
4412
|
$printFmt{$type} or $printFmt{$type} = [ ];
|
4364
4413
|
push @{$printFmt{$type}}, $expr;
|
4365
4414
|
# add to list of requested tags
|
4366
|
-
push @requestTags, $expr =~ /\$\{?((?:[
|
4415
|
+
push @requestTags, $expr =~ /\$\{?((?:[-_0-9A-Z]+:)*[-_0-9A-Z?*]+)/ig;
|
4367
4416
|
$printFmt{SetTags} = 1 if $expr =~ /\bSetTags\b/;
|
4368
4417
|
}
|
4369
4418
|
|
@@ -4718,7 +4767,7 @@ sub FilterArgfileLine($)
|
|
4718
4767
|
$arg =~ s/^\s+//; # remove leading white space
|
4719
4768
|
$arg =~ s/[\x0d\x0a]+$//s; # remove trailing newline
|
4720
4769
|
# remove white space before, and single space after '=', '+=', '-=' or '<='
|
4721
|
-
$arg =~ s/^(-[
|
4770
|
+
$arg =~ s/^(-[-_0-9A-Z:]+#?)\s*([-+<]?=) ?/$1$2/i;
|
4722
4771
|
return undef if $arg eq '';
|
4723
4772
|
}
|
4724
4773
|
return $arg;
|
@@ -5598,9 +5647,13 @@ deleted). Also, FileName and Directory columns are ignored if they exist
|
|
5598
5647
|
all other columns are imported. To force a tag to be deleted, use the B<-f>
|
5599
5648
|
option and set the value to "-" in the CSV file (or to the MissingTagValue
|
5600
5649
|
if this API option was used). Multiple databases may be imported in a
|
5601
|
-
single command.
|
5602
|
-
|
5603
|
-
|
5650
|
+
single command.
|
5651
|
+
|
5652
|
+
Specific tags may be imported from the CSV database by adding B<->I<TAG>
|
5653
|
+
options to the command, or excluded with B<-->I<TAG>, with exclusions taking
|
5654
|
+
priority. Group names and wildcards are allowed. If no tags are specified,
|
5655
|
+
then all except FileName and Directory are used. Tags are imported in the
|
5656
|
+
same order as the database entries.
|
5604
5657
|
|
5605
5658
|
When exporting a CSV file, the B<-g> or B<-G> option adds group names to the
|
5606
5659
|
tag headings. If the B<-a> option is used to allow duplicate tag names, the
|
@@ -5783,9 +5836,13 @@ that options exporting JSON objects instead of simple values are not
|
|
5783
5836
|
compatible with the import file format (ie. export with B<-D>, B<-H>, B<-l>,
|
5784
5837
|
or B<-T> is not compatible, and use B<-G> instead of B<-g>). Additionally,
|
5785
5838
|
tag names in the input JSON file may be suffixed with a C<#> to disable
|
5786
|
-
print conversion.
|
5787
|
-
|
5788
|
-
|
5839
|
+
print conversion.
|
5840
|
+
|
5841
|
+
Specific tags may be imported from the JSON database by adding B<->I<TAG>
|
5842
|
+
options to the command, or excluded with B<-->I<TAG>, with exclusions taking
|
5843
|
+
priority. Group names and wildcards are allowed. If no tags are specified,
|
5844
|
+
then all except FileName and Directory are used. Tags are imported in the
|
5845
|
+
same order as the database entries.
|
5789
5846
|
|
5790
5847
|
Unlike CSV import, empty values are not ignored, and will cause an empty
|
5791
5848
|
value to be written if supported by the specific metadata type. Tags are
|
@@ -5926,7 +5983,7 @@ with this command:
|
|
5926
5983
|
|
5927
5984
|
produces output like this:
|
5928
5985
|
|
5929
|
-
-- Generated by ExifTool 13.
|
5986
|
+
-- Generated by ExifTool 13.12 --
|
5930
5987
|
File: a.jpg - 2003:10:31 15:44:19
|
5931
5988
|
(f/5.6, 1/60s, ISO 100)
|
5932
5989
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -6778,9 +6835,10 @@ System tags:
|
|
6778
6835
|
The B<-g> and B<-G> options may be used to organize the output by the
|
6779
6836
|
specified family of groups, with B<-G1> being the default. The B<-a> option
|
6780
6837
|
is implied. Adding B<-v> includes a count of the number of tags that are
|
6781
|
-
the same in each group
|
6782
|
-
|
6783
|
-
B<-
|
6838
|
+
the same in each group, and B<-v2> also indicates when zero tags were the
|
6839
|
+
same. The following text formatting options are valid when B<-diff> is
|
6840
|
+
used: B<-c>, B<-charset>, B<-d>, B<-E>, B<-ec>, B<-ex>, B<-L>, B<-lang>,
|
6841
|
+
B<-n>, B<-s>, B<-sep>, B<-struct> and B<-w>.
|
6784
6842
|
|
6785
6843
|
=item B<-geotag> I<TRKFILE>
|
6786
6844
|
|
@@ -7281,13 +7339,13 @@ avoid processing hidden files (provided Win32API::File is available):
|
|
7281
7339
|
B<Note>: Beware when cutting and pasting these examples into your terminal!
|
7282
7340
|
Some characters such as single and double quotes and hyphens may have been
|
7283
7341
|
changed into similar-looking yet functionally-different characters by the
|
7284
|
-
text formatter used to display this documentation. Also note that
|
7285
|
-
|
7286
|
-
|
7342
|
+
text formatter used to display this documentation. Also note that in the
|
7343
|
+
Windows cmd shell double quotes must be used instead of the single quotes
|
7344
|
+
used in the examples.
|
7287
7345
|
|
7288
7346
|
=over 5
|
7289
7347
|
|
7290
|
-
=item exiftool -a -u -g1 a.jpg
|
7348
|
+
=item C<exiftool -a -u -g1 a.jpg>
|
7291
7349
|
|
7292
7350
|
Print all meta information in an image, including duplicate and unknown
|
7293
7351
|
tags, sorted by group (for family 1). For performance reasons, this command
|
@@ -7296,89 +7354,89 @@ metadata extracted by external utilities, and metadata requiring excessive
|
|
7296
7354
|
processing time may not be extracted). Add C<-ee3> and C<-api RequestAll=3>
|
7297
7355
|
to the command to extract absolutely everything available.
|
7298
7356
|
|
7299
|
-
=item exiftool -common dir
|
7357
|
+
=item C<exiftool -common dir>
|
7300
7358
|
|
7301
7359
|
Print common meta information for all images in C<dir>. C<-common> is a
|
7302
7360
|
L<shortcut tag|Image::ExifTool::Shortcuts> representing common EXIF meta
|
7303
7361
|
information.
|
7304
7362
|
|
7305
|
-
=item exiftool -T -createdate -aperture -shutterspeed -iso dir > out.txt
|
7363
|
+
=item C<exiftool -T -createdate -aperture -shutterspeed -iso dir E<gt> out.txt>
|
7306
7364
|
|
7307
7365
|
List specified meta information in tab-delimited column form for all images
|
7308
7366
|
in C<dir> to an output text file named "out.txt".
|
7309
7367
|
|
7310
|
-
=item exiftool -s -ImageSize -ExposureTime b.jpg
|
7368
|
+
=item C<exiftool -s -ImageSize -ExposureTime b.jpg>
|
7311
7369
|
|
7312
7370
|
Print ImageSize and ExposureTime tag names and values.
|
7313
7371
|
|
7314
|
-
=item exiftool -l -canon c.jpg d.jpg
|
7372
|
+
=item C<exiftool -l -canon c.jpg d.jpg>
|
7315
7373
|
|
7316
7374
|
Print standard Canon information from two image files.
|
7317
7375
|
|
7318
|
-
=item exiftool -r -w .txt -common pictures
|
7376
|
+
=item C<exiftool -r -w .txt -common pictures>
|
7319
7377
|
|
7320
7378
|
Recursively extract common meta information from files in C<pictures>
|
7321
7379
|
directory, writing text output to C<.txt> files with the same names.
|
7322
7380
|
|
7323
|
-
=item exiftool -b -ThumbnailImage image.jpg > thumbnail.jpg
|
7381
|
+
=item C<exiftool -b -ThumbnailImage image.jpg E<gt> thumbnail.jpg>
|
7324
7382
|
|
7325
7383
|
Save thumbnail image from C<image.jpg> to a file called C<thumbnail.jpg>.
|
7326
7384
|
|
7327
|
-
=item exiftool -b -JpgFromRaw -w _JFR.JPG -ext NEF -r
|
7385
|
+
=item C<exiftool -b -JpgFromRaw -w _JFR.JPG -ext NEF -r .>
|
7328
7386
|
|
7329
7387
|
Recursively extract JPG image from all Nikon NEF files in the current
|
7330
7388
|
directory, adding C<_JFR.JPG> for the name of the output JPG files.
|
7331
7389
|
|
7332
|
-
=item exiftool -a -b -W %d%f_%t%-c.%s -preview:all dir
|
7390
|
+
=item C<exiftool -a -b -W %d%f_%t%-c.%s -preview:all dir>
|
7333
7391
|
|
7334
7392
|
Extract all types of preview images (ThumbnailImage, PreviewImage,
|
7335
7393
|
JpgFromRaw, etc.) from files in directory "dir", adding the tag name to the
|
7336
7394
|
output preview image file names.
|
7337
7395
|
|
7338
|
-
=item exiftool -d '%r %a, %B %e, %Y' -DateTimeOriginal -S -s -ext jpg
|
7396
|
+
=item C<exiftool -d '%r %a, %B %e, %Y' -DateTimeOriginal -S -s -ext jpg .>
|
7339
7397
|
|
7340
7398
|
Print formatted date/time for all JPG files in the current directory.
|
7341
7399
|
|
7342
|
-
=item exiftool -IFD1:XResolution -IFD1:YResolution image.jpg
|
7400
|
+
=item C<exiftool -IFD1:XResolution -IFD1:YResolution image.jpg>
|
7343
7401
|
|
7344
7402
|
Extract image resolution from EXIF IFD1 information (thumbnail image IFD).
|
7345
7403
|
|
7346
|
-
=item exiftool '-*resolution*' image.jpg
|
7404
|
+
=item C<exiftool '-*resolution*' image.jpg>
|
7347
7405
|
|
7348
7406
|
Extract all tags with names containing the word "Resolution" from an image.
|
7349
7407
|
|
7350
|
-
=item exiftool -xmp:author:all -a image.jpg
|
7408
|
+
=item C<exiftool -xmp:author:all -a image.jpg>
|
7351
7409
|
|
7352
7410
|
Extract all author-related XMP information from an image.
|
7353
7411
|
|
7354
|
-
=item exiftool -xmp -b a.jpg > out.xmp
|
7412
|
+
=item C<exiftool -xmp -b a.jpg E<gt> out.xmp>
|
7355
7413
|
|
7356
7414
|
Extract complete XMP data record intact from C<a.jpg> and write it to
|
7357
7415
|
C<out.xmp> using the special C<XMP> tag (see the Extra tags in
|
7358
7416
|
L<Image::ExifTool::TagNames|Image::ExifTool::TagNames>).
|
7359
7417
|
|
7360
|
-
=item exiftool -p '$filename has date $dateTimeOriginal' -q -f dir
|
7418
|
+
=item C<exiftool -p '$filename has date $dateTimeOriginal' -q -f dir>
|
7361
7419
|
|
7362
7420
|
Print one line of output containing the file name and DateTimeOriginal for
|
7363
7421
|
each image in directory C<dir>.
|
7364
7422
|
|
7365
|
-
=item exiftool -ee3 -p '$gpslatitude, $gpslongitude, $gpstimestamp' a.m2ts
|
7423
|
+
=item C<exiftool -ee3 -p '$gpslatitude, $gpslongitude, $gpstimestamp' a.m2ts>
|
7366
7424
|
|
7367
7425
|
Extract all GPS positions from an AVCHD video.
|
7368
7426
|
|
7369
|
-
=item exiftool -icc_profile -b -w icc image.jpg
|
7427
|
+
=item C<exiftool -icc_profile -b -w icc image.jpg>
|
7370
7428
|
|
7371
7429
|
Save complete ICC_Profile from an image to an output file with the same name
|
7372
7430
|
and an extension of C<.icc>.
|
7373
7431
|
|
7374
|
-
=item exiftool -htmldump -w tmp/%f_%e.html t/images
|
7432
|
+
=item C<exiftool -htmldump -w tmp/%f_%e.html t/images>
|
7375
7433
|
|
7376
7434
|
Generate HTML pages from a hex dump of EXIF information in all images from
|
7377
7435
|
the C<t/images> directory. The output HTML files are written to the C<tmp>
|
7378
7436
|
directory (which is created if it didn't exist), with names of the form
|
7379
7437
|
'FILENAME_EXT.html'.
|
7380
7438
|
|
7381
|
-
=item exiftool -a -b -ee -embeddedimage -W Image_%.3g3.%s file.pdf
|
7439
|
+
=item C<exiftool -a -b -ee -embeddedimage -W Image_%.3g3.%s file.pdf>
|
7382
7440
|
|
7383
7441
|
Extract embedded JPG and JP2 images from a PDF file. The output images will
|
7384
7442
|
have file names like "Image_#.jpg" or "Image_#.jp2", where "#" is the
|
@@ -7396,130 +7454,130 @@ be used (eg. -Comment=E<34>This is a new commentE<34>).
|
|
7396
7454
|
|
7397
7455
|
=over 5
|
7398
7456
|
|
7399
|
-
=item exiftool -
|
7457
|
+
=item C<exiftool -tagsfromfile src.jpg -exif:all --subifd:all dst.jpg>
|
7400
7458
|
|
7401
7459
|
Write new comment to a JPG image (replaces any existing comment).
|
7402
7460
|
|
7403
|
-
=item exiftool -comment= -o newdir -ext jpg
|
7461
|
+
=item C<exiftool -comment= -o newdir -ext jpg .>
|
7404
7462
|
|
7405
7463
|
Remove comment from all JPG images in the current directory, writing the
|
7406
7464
|
modified images to a new directory.
|
7407
7465
|
|
7408
|
-
=item exiftool -keywords=EXIF -keywords=editor dst.jpg
|
7466
|
+
=item C<exiftool -keywords=EXIF -keywords=editor dst.jpg>
|
7409
7467
|
|
7410
7468
|
Replace existing keyword list with two new keywords (C<EXIF> and C<editor>).
|
7411
7469
|
|
7412
|
-
=item exiftool -Keywords+=word -o newfile.jpg src.jpg
|
7470
|
+
=item C<exiftool -Keywords+=word -o newfile.jpg src.jpg>
|
7413
7471
|
|
7414
7472
|
Copy a source image to a new file, and add a keyword (C<word>) to the
|
7415
7473
|
current list of keywords.
|
7416
7474
|
|
7417
|
-
=item exiftool -exposurecompensation+=-0.5 a.jpg
|
7475
|
+
=item C<exiftool -exposurecompensation+=-0.5 a.jpg>
|
7418
7476
|
|
7419
7477
|
Decrement the value of ExposureCompensation by 0.5 EV. Note that += with a
|
7420
7478
|
negative value is used for decrementing because the -= operator is used for
|
7421
7479
|
conditional deletion (see next example).
|
7422
7480
|
|
7423
|
-
=item exiftool -credit-=xxx dir
|
7481
|
+
=item C<exiftool -credit-=xxx dir>
|
7424
7482
|
|
7425
7483
|
Delete Credit information from all files in a directory where the Credit
|
7426
7484
|
value was C<xxx>.
|
7427
7485
|
|
7428
|
-
=item exiftool -xmp:description-de='kühl' -E dst.jpg
|
7486
|
+
=item C<exiftool -xmp:description-de='kühl' -E dst.jpg>
|
7429
7487
|
|
7430
7488
|
Write alternate language for XMP:Description, using HTML character escaping
|
7431
7489
|
to input special characters.
|
7432
7490
|
|
7433
|
-
=item exiftool -all= dst.jpg
|
7491
|
+
=item C<exiftool -all= dst.jpg>
|
7434
7492
|
|
7435
7493
|
Delete all meta information from an image. Note: You should NOT do this to
|
7436
7494
|
RAW images (except DNG) since proprietary RAW image formats often contain
|
7437
7495
|
information in the makernotes that is necessary for converting the image.
|
7438
7496
|
|
7439
|
-
=item exiftool -all= -comment='lonely' dst.jpg
|
7497
|
+
=item C<exiftool -all= -comment='lonely' dst.jpg>
|
7440
7498
|
|
7441
7499
|
Delete all meta information from an image and add a comment back in. (Note
|
7442
7500
|
that the order is important: C<-comment='lonely' -all=> would also delete
|
7443
7501
|
the new comment.)
|
7444
7502
|
|
7445
|
-
=item exiftool -all= --jfif:all dst.jpg
|
7503
|
+
=item C<exiftool -all= --jfif:all dst.jpg>
|
7446
7504
|
|
7447
7505
|
Delete all meta information except JFIF group from an image.
|
7448
7506
|
|
7449
|
-
=item exiftool -Photoshop:All= dst.jpg
|
7507
|
+
=item C<exiftool -Photoshop:All= dst.jpg>
|
7450
7508
|
|
7451
7509
|
Delete Photoshop meta information from an image (note that the Photoshop
|
7452
7510
|
information also includes IPTC).
|
7453
7511
|
|
7454
|
-
=item exiftool -r -XMP-crss:all= DIR
|
7512
|
+
=item C<exiftool -r -XMP-crss:all= DIR>
|
7455
7513
|
|
7456
7514
|
Recursively delete all XMP-crss information from images in a directory.
|
7457
7515
|
|
7458
|
-
=item exiftool '-ThumbnailImageE<lt>=thumb.jpg' dst.jpg
|
7516
|
+
=item C<exiftool '-ThumbnailImageE<lt>=thumb.jpg' dst.jpg>
|
7459
7517
|
|
7460
7518
|
Set the thumbnail image from specified file (Note: The quotes are necessary
|
7461
7519
|
to prevent shell redirection).
|
7462
7520
|
|
7463
|
-
=item exiftool '-JpgFromRawE<lt>=%d%f_JFR.JPG' -ext NEF -r
|
7521
|
+
=item C<exiftool '-JpgFromRawE<lt>=%d%f_JFR.JPG' -ext NEF -r .>
|
7464
7522
|
|
7465
7523
|
Recursively write JPEG images with filenames ending in C<_JFR.JPG> to the
|
7466
7524
|
JpgFromRaw tag of like-named files with extension C<.NEF> in the current
|
7467
7525
|
directory. (This is the inverse of the C<-JpgFromRaw> command of the
|
7468
7526
|
L</READING EXAMPLES> section above.)
|
7469
7527
|
|
7470
|
-
=item exiftool -DateTimeOriginal-='0:0:0 1:30:0' dir
|
7528
|
+
=item C<exiftool -DateTimeOriginal-='0:0:0 1:30:0' dir>
|
7471
7529
|
|
7472
7530
|
Adjust original date/time of all images in directory C<dir> by subtracting
|
7473
7531
|
one hour and 30 minutes. (This is equivalent to C<-DateTimeOriginal-=1.5>.
|
7474
7532
|
See L<Image::ExifTool::Shift.pl|Image::ExifTool::Shift.pl> for details.)
|
7475
7533
|
|
7476
|
-
=item exiftool -createdate+=3 -modifydate+=3 a.jpg b.jpg
|
7534
|
+
=item C<exiftool -createdate+=3 -modifydate+=3 a.jpg b.jpg>
|
7477
7535
|
|
7478
7536
|
Add 3 hours to the CreateDate and ModifyDate timestamps of two images.
|
7479
7537
|
|
7480
|
-
=item exiftool -AllDates+=1:30 -if '$make eq E<34>CanonE<34>' dir
|
7538
|
+
=item C<exiftool -AllDates+=1:30 -if '$make eq E<34>CanonE<34>' dir>
|
7481
7539
|
|
7482
7540
|
Shift the values of DateTimeOriginal, CreateDate and ModifyDate forward by 1
|
7483
7541
|
hour and 30 minutes for all Canon images in a directory. (The AllDates tag
|
7484
7542
|
is provided as a shortcut for these three tags, allowing them to be accessed
|
7485
7543
|
via a single tag.)
|
7486
7544
|
|
7487
|
-
=item exiftool -xmp:city=Kingston image1.jpg image2.nef
|
7545
|
+
=item C<exiftool -xmp:city=Kingston image1.jpg image2.nef>
|
7488
7546
|
|
7489
7547
|
Write a tag to the XMP group of two images. (Without the C<xmp:> this tag
|
7490
7548
|
would get written to the IPTC group since C<City> exists in both, and IPTC
|
7491
7549
|
is preferred by default.)
|
7492
7550
|
|
7493
|
-
=item exiftool -LightSource-='Unknown (0)' dst.tiff
|
7551
|
+
=item C<exiftool -LightSource-='Unknown (0)' dst.tiff>
|
7494
7552
|
|
7495
7553
|
Delete C<LightSource> tag only if it is unknown with a value of 0.
|
7496
7554
|
|
7497
|
-
=item exiftool -whitebalance-=auto -WhiteBalance=tung dst.jpg
|
7555
|
+
=item C<exiftool -whitebalance-=auto -WhiteBalance=tung dst.jpg>
|
7498
7556
|
|
7499
7557
|
Set C<WhiteBalance> to C<Tungsten> only if it was previously C<Auto>.
|
7500
7558
|
|
7501
|
-
=item exiftool -comment-= -comment='new comment' a.jpg
|
7559
|
+
=item C<exiftool -comment-= -comment='new comment' a.jpg>
|
7502
7560
|
|
7503
7561
|
Write a new comment only if the image doesn't have one already.
|
7504
7562
|
|
7505
|
-
=item exiftool -o %d%f.xmp dir
|
7563
|
+
=item C<exiftool -o %d%f.xmp dir>
|
7506
7564
|
|
7507
7565
|
Create XMP meta information data files for all images in C<dir>.
|
7508
7566
|
|
7509
|
-
=item exiftool -o test.xmp -owner=Phil -title='XMP File'
|
7567
|
+
=item C<exiftool -o test.xmp -owner=Phil -title='XMP File'>
|
7510
7568
|
|
7511
7569
|
Create an XMP data file only from tags defined on the command line.
|
7512
7570
|
|
7513
|
-
=item exiftool '-ICC_Profile<=%d%f.icc' image.jpg
|
7571
|
+
=item C<exiftool '-ICC_Profile<=%d%f.icc' image.jpg>
|
7514
7572
|
|
7515
7573
|
Write ICC_Profile to an image from a C<.icc> file of the same name.
|
7516
7574
|
|
7517
|
-
=item exiftool -hierarchicalkeywords='{keyword=one,children={keyword=B}}'
|
7575
|
+
=item C<exiftool -hierarchicalkeywords='{keyword=one,children={keyword=B}}'>
|
7518
7576
|
|
7519
7577
|
Write structured XMP information. See L<https://exiftool.org/struct.html>
|
7520
7578
|
for more details.
|
7521
7579
|
|
7522
|
-
=item exiftool -trailer:all= image.jpg
|
7580
|
+
=item C<exiftool -trailer:all= image.jpg>
|
7523
7581
|
|
7524
7582
|
Delete any trailer found after the end of image (EOI) in a JPEG file. A
|
7525
7583
|
number of digital cameras store a large PreviewImage after the JPEG EOI, and
|
@@ -7535,22 +7593,22 @@ These examples demonstrate the ability to copy tag values between files.
|
|
7535
7593
|
|
7536
7594
|
=over 5
|
7537
7595
|
|
7538
|
-
=item exiftool -tagsFromFile src.cr2 dst.jpg
|
7596
|
+
=item C<exiftool -tagsFromFile src.cr2 dst.jpg>
|
7539
7597
|
|
7540
7598
|
Copy the values of all writable tags from C<src.cr2> to C<dst.jpg>, writing
|
7541
7599
|
the information to same-named tags in the preferred groups.
|
7542
7600
|
|
7543
|
-
=item exiftool -TagsFromFile src.jpg -all:all dst.jpg
|
7601
|
+
=item C<exiftool -TagsFromFile src.jpg -all:all dst.jpg>
|
7544
7602
|
|
7545
7603
|
Copy the values of all writable tags from C<src.jpg> to C<dst.jpg>,
|
7546
7604
|
preserving the original tag groups.
|
7547
7605
|
|
7548
|
-
=item exiftool -all= -tagsfromfile src.jpg -exif:all dst.jpg
|
7606
|
+
=item C<exiftool -all= -tagsfromfile src.jpg -exif:all dst.jpg>
|
7549
7607
|
|
7550
7608
|
Erase all meta information from C<dst.jpg> image, then copy EXIF tags from
|
7551
7609
|
C<src.jpg>.
|
7552
7610
|
|
7553
|
-
=item exiftool -exif:all= -tagsfromfile @ -all:all -unsafe bad.jpg
|
7611
|
+
=item C<exiftool -exif:all= -tagsfromfile @ -all:all -unsafe bad.jpg>
|
7554
7612
|
|
7555
7613
|
Rebuild all EXIF meta information from scratch in an image. This technique
|
7556
7614
|
can be used in JPEG images to repair corrupted EXIF information which
|
@@ -7559,7 +7617,7 @@ shortcut for unsafe EXIF tags in JPEG images which are not normally copied.
|
|
7559
7617
|
See the L<tag name documentation|Image::ExifTool::TagNames> for more details
|
7560
7618
|
about unsafe tags.
|
7561
7619
|
|
7562
|
-
=item exiftool -Tagsfromfile a.jpg out.xmp
|
7620
|
+
=item C<exiftool -Tagsfromfile a.jpg out.xmp>
|
7563
7621
|
|
7564
7622
|
Copy meta information from C<a.jpg> to an XMP data file. If the XMP data
|
7565
7623
|
file C<out.xmp> already exists, it will be updated with the new information.
|
@@ -7568,46 +7626,46 @@ be created like this (files containing images may be edited but not
|
|
7568
7626
|
created). See L</WRITING EXAMPLES> above for another technique to generate
|
7569
7627
|
XMP files.
|
7570
7628
|
|
7571
|
-
=item exiftool -tagsFromFile a.jpg -XMP:All= -ThumbnailImage= -m b.jpg
|
7629
|
+
=item C<exiftool -tagsFromFile a.jpg -XMP:All= -ThumbnailImage= -m b.jpg>
|
7572
7630
|
|
7573
7631
|
Copy all meta information from C<a.jpg> to C<b.jpg>, deleting all XMP
|
7574
7632
|
information and the thumbnail image from the destination.
|
7575
7633
|
|
7576
|
-
=item exiftool -TagsFromFile src.jpg -title -author=Phil dst.jpg
|
7634
|
+
=item C<exiftool -TagsFromFile src.jpg -title -author=Phil dst.jpg>
|
7577
7635
|
|
7578
7636
|
Copy title from one image to another and set a new author name.
|
7579
7637
|
|
7580
|
-
=item exiftool -TagsFromFile a.jpg -ISO -TagsFromFile b.jpg -comment
|
7581
|
-
dst.jpg
|
7638
|
+
=item C<exiftool -TagsFromFile a.jpg -ISO -TagsFromFile b.jpg -comment
|
7639
|
+
dst.jpg>
|
7582
7640
|
|
7583
7641
|
Copy ISO from one image and Comment from another image to a destination
|
7584
7642
|
image.
|
7585
7643
|
|
7586
|
-
=item exiftool -tagsfromfile src.jpg -exif:all --subifd:all dst.jpg
|
7644
|
+
=item C<exiftool -tagsfromfile src.jpg -exif:all --subifd:all dst.jpg>
|
7587
7645
|
|
7588
7646
|
Copy only the EXIF information from one image to another, excluding SubIFD
|
7589
7647
|
tags.
|
7590
7648
|
|
7591
|
-
=item exiftool '-FileModifyDateE<lt>DateTimeOriginal' dir
|
7649
|
+
=item C<exiftool '-FileModifyDateE<lt>DateTimeOriginal' dir>
|
7592
7650
|
|
7593
7651
|
Use the original date from the meta information to set the same file's
|
7594
7652
|
filesystem modification date for all images in a directory. (Note that
|
7595
7653
|
C<-TagsFromFile @> is assumed if no other B<-TagsFromFile> is specified when
|
7596
7654
|
redirecting information as in this example.)
|
7597
7655
|
|
7598
|
-
=item exiftool -TagsFromFile src.jpg '-xmp:allE<lt>all' dst.jpg
|
7656
|
+
=item C<exiftool -TagsFromFile src.jpg '-xmp:allE<lt>all' dst.jpg>
|
7599
7657
|
|
7600
7658
|
Copy all possible information from C<src.jpg> and write in XMP format to
|
7601
7659
|
C<dst.jpg>.
|
7602
7660
|
|
7603
|
-
=item exiftool '-Description<${FileName;s/\.[^.]*$//}' dir
|
7661
|
+
=item C<exiftool '-Description<${FileName;s/\.[^.]*$//}' dir>
|
7604
7662
|
|
7605
7663
|
Set the image Description from the file name after removing the extension.
|
7606
7664
|
This example uses the L</Advanced formatting feature> to perform a
|
7607
7665
|
substitution operation to remove the last dot and subsequent characters from
|
7608
7666
|
the file name.
|
7609
7667
|
|
7610
|
-
=item exiftool -@ iptc2xmp.args -iptc:all= a.jpg
|
7668
|
+
=item C<exiftool -@ iptc2xmp.args -iptc:all= a.jpg>
|
7611
7669
|
|
7612
7670
|
Translate IPTC information to XMP with appropriate tag name conversions, and
|
7613
7671
|
delete the original IPTC information from an image. This example uses
|
@@ -7617,40 +7675,40 @@ Also included with the distribution are xmp2iptc.args (which performs the
|
|
7617
7675
|
inverse conversion) and a few more .args files for other conversions between
|
7618
7676
|
EXIF, IPTC and XMP.
|
7619
7677
|
|
7620
|
-
=item exiftool -tagsfromfile %d%f.CR2 -r -ext JPG dir
|
7678
|
+
=item C<exiftool -tagsfromfile %d%f.CR2 -r -ext JPG dir>
|
7621
7679
|
|
7622
7680
|
Recursively rewrite all C<JPG> images in C<dir> with information copied from
|
7623
7681
|
the corresponding C<CR2> images in the same directories.
|
7624
7682
|
|
7625
|
-
=item exiftool '-keywords+E<lt>make' image.jpg
|
7683
|
+
=item C<exiftool '-keywords+E<lt>make' image.jpg>
|
7626
7684
|
|
7627
7685
|
Add camera make to list of keywords.
|
7628
7686
|
|
7629
|
-
=item exiftool '-commentE<lt>ISO=$exif:iso Exposure=${shutterspeed}' dir
|
7687
|
+
=item C<exiftool '-commentE<lt>ISO=$exif:iso Exposure=${shutterspeed}' dir>
|
7630
7688
|
|
7631
7689
|
Set the Comment tag of all images in C<dir> from the values of the EXIF:ISO
|
7632
7690
|
and ShutterSpeed tags. The resulting comment will be in the form "ISO=100
|
7633
7691
|
Exposure=1/60".
|
7634
7692
|
|
7635
|
-
=item exiftool -TagsFromFile src.jpg -icc_profile dst.jpg
|
7693
|
+
=item C<exiftool -TagsFromFile src.jpg -icc_profile dst.jpg>
|
7636
7694
|
|
7637
7695
|
Copy ICC_Profile from one image to another.
|
7638
7696
|
|
7639
|
-
=item exiftool -TagsFromFile src.jpg -all:all dst.mie
|
7697
|
+
=item C<exiftool -TagsFromFile src.jpg -all:all dst.mie>
|
7640
7698
|
|
7641
7699
|
Copy all meta information in its original form from a JPEG image to a MIE
|
7642
7700
|
file. The MIE file will be created if it doesn't exist. This technique can
|
7643
7701
|
be used to store the metadata of an image so it can be inserted back into
|
7644
7702
|
the image (with the inverse command) later in a workflow.
|
7645
7703
|
|
7646
|
-
=item exiftool -o dst.mie -all:all src.jpg
|
7704
|
+
=item C<exiftool -o dst.mie -all:all src.jpg>
|
7647
7705
|
|
7648
7706
|
This command performs exactly the same task as the command above, except
|
7649
7707
|
that the B<-o> option will not write to an output file that already exists.
|
7650
7708
|
|
7651
|
-
=item exiftool -b -jpgfromraw -w %d%f_%ue.jpg -execute -b -previewimage -w
|
7709
|
+
=item C<exiftool -b -jpgfromraw -w %d%f_%ue.jpg -execute -b -previewimage -w
|
7652
7710
|
%d%f_%ue.jpg -execute -tagsfromfile @ -srcfile %d%f_%ue.jpg
|
7653
|
-
-overwrite_original -common_args --ext jpg DIR
|
7711
|
+
-overwrite_original -common_args --ext jpg DIR>
|
7654
7712
|
|
7655
7713
|
[Advanced] Extract JpgFromRaw or PreviewImage from all but JPG files in DIR,
|
7656
7714
|
saving them with file names like C<image_EXT.jpg>, then add all meta
|
@@ -7683,34 +7741,34 @@ examples.
|
|
7683
7741
|
|
7684
7742
|
=over 5
|
7685
7743
|
|
7686
|
-
=item exiftool -filename=new.jpg dir/old.jpg
|
7744
|
+
=item C<exiftool -filename=new.jpg dir/old.jpg>
|
7687
7745
|
|
7688
7746
|
Rename C<old.jpg> to C<new.jpg> in directory C<dir>.
|
7689
7747
|
|
7690
|
-
=item exiftool -directory=%e dir
|
7748
|
+
=item C<exiftool -directory=%e dir>
|
7691
7749
|
|
7692
7750
|
Move all files from directory C<dir> into directories named by the original
|
7693
7751
|
file extensions.
|
7694
7752
|
|
7695
|
-
=item exiftool '-
|
7753
|
+
=item C<exiftool '-DirectoryE<lt>DateTimeOriginal' -d %Y/%m/%d dir>
|
7696
7754
|
|
7697
7755
|
Move all files in C<dir> into a directory hierarchy based on year, month and
|
7698
7756
|
day of C<DateTimeOriginal>. eg) This command would move the file
|
7699
7757
|
C<dir/image.jpg> with a C<DateTimeOriginal> of C<2005:10:12 16:05:56> to
|
7700
7758
|
C<2005/10/12/image.jpg>.
|
7701
7759
|
|
7702
|
-
=item exiftool -o . '-
|
7760
|
+
=item C<exiftool -o . '-DirectoryE<lt>DateTimeOriginal' -d %Y/%m/%d dir>
|
7703
7761
|
|
7704
7762
|
Same effect as above except files are copied instead of moved.
|
7705
7763
|
|
7706
|
-
=item exiftool '-
|
7764
|
+
=item C<exiftool '-filenameE<lt>%f_${model;}.%e' dir>
|
7707
7765
|
|
7708
7766
|
Rename all files in C<dir> by adding the camera model name to the file name.
|
7709
7767
|
The semicolon after the tag name inside the braces causes characters which
|
7710
7768
|
are invalid in Windows file names to be deleted from the tag value (see the
|
7711
7769
|
L</Advanced formatting feature> for an explanation).
|
7712
7770
|
|
7713
|
-
=item exiftool '-
|
7771
|
+
=item C<exiftool '-FileNameE<lt>CreateDate' -d %Y%m%d_%H%M%S%%-c.%%e dir>
|
7714
7772
|
|
7715
7773
|
Rename all images in C<dir> according to the C<CreateDate> date and time,
|
7716
7774
|
adding a copy number with leading '-' if the file already exists (C<%-c>),
|
@@ -7718,7 +7776,7 @@ and preserving the original file extension (C<%e>). Note the extra '%'
|
|
7718
7776
|
necessary to escape the filename codes (C<%c> and C<%e>) in the date format
|
7719
7777
|
string.
|
7720
7778
|
|
7721
|
-
=item exiftool -r '-
|
7779
|
+
=item C<exiftool -r '-FileNameE<lt>CreateDate' -d %Y-%m-%d/%H%M_%%f.%%e dir>
|
7722
7780
|
|
7723
7781
|
Both the directory and the filename may be changed together via the
|
7724
7782
|
C<FileName> tag if the new C<FileName> contains a '/'. The example above
|
@@ -7726,7 +7784,7 @@ recursively renames all images in a directory by adding a C<CreateDate>
|
|
7726
7784
|
timestamp to the start of the filename, then moves them into new directories
|
7727
7785
|
named by date.
|
7728
7786
|
|
7729
|
-
=item exiftool '-
|
7787
|
+
=item C<exiftool '-FileNameE<lt>${CreateDate}_$filenumber.jpg' -d %Y%m%d -ext jpg .>
|
7730
7788
|
|
7731
7789
|
Set the filename of all JPG images in the current directory from the
|
7732
7790
|
CreateDate and FileNumber tags, in the form "20060507_118-1861.jpg".
|
@@ -7745,67 +7803,67 @@ the B<-geotag> option.)
|
|
7745
7803
|
|
7746
7804
|
=over 5
|
7747
7805
|
|
7748
|
-
=item exiftool -geotag track.log a.jpg
|
7806
|
+
=item C<exiftool -geotag track.log a.jpg>
|
7749
7807
|
|
7750
7808
|
Geotag an image (C<a.jpg>) from position information in a GPS track log
|
7751
7809
|
(C<track.log>). Since the C<Geotime> tag is not specified, the value of
|
7752
7810
|
DateTimeOriginal is used for geotagging. Local system time is assumed
|
7753
7811
|
unless DateTimeOriginal contains a timezone.
|
7754
7812
|
|
7755
|
-
=item exiftool -geotag track.log -geolocate=geotag a.jpg
|
7813
|
+
=item C<exiftool -geotag track.log -geolocate=geotag a.jpg>
|
7756
7814
|
|
7757
7815
|
Geotag an image and also write geolocation information of the nearest city
|
7758
7816
|
(city name, state/province and country). Read here for more details about
|
7759
7817
|
the Geolocation feature: L<https://exiftool.org/geolocation.html#Write>
|
7760
7818
|
|
7761
|
-
=item exiftool -geotag t.log -geotime='2009:04:02 13:41:12-05:00' a.jpg
|
7819
|
+
=item C<exiftool -geotag t.log -geotime='2009:04:02 13:41:12-05:00' a.jpg>
|
7762
7820
|
|
7763
7821
|
Geotag an image with the GPS position for a specific time.
|
7764
7822
|
|
7765
|
-
=item exiftool -geotag log.gpx '-xmp:geotimeE<lt>createdate' dir
|
7823
|
+
=item C<exiftool -geotag log.gpx '-xmp:geotimeE<lt>createdate' dir>
|
7766
7824
|
|
7767
7825
|
Geotag all images in directory C<dir> with XMP tags instead of EXIF tags,
|
7768
7826
|
based on the image CreateDate.
|
7769
7827
|
|
7770
|
-
=item exiftool -geotag a.log -geosync=-20 dir
|
7828
|
+
=item C<exiftool -geotag a.log -geosync=-20 dir>
|
7771
7829
|
|
7772
7830
|
Geotag images in directory C<dir>, accounting for image timestamps which
|
7773
7831
|
were 20 seconds ahead of GPS.
|
7774
7832
|
|
7775
|
-
=item exiftool -geotag a.log -geosync=1.jpg -geosync=2.jpg dir
|
7833
|
+
=item C<exiftool -geotag a.log -geosync=1.jpg -geosync=2.jpg dir>
|
7776
7834
|
|
7777
7835
|
Geotag images using time synchronization from two previously geotagged images
|
7778
7836
|
(1.jpg and 2.jpg), synchronizing the image and GPS times using a linear time
|
7779
7837
|
drift correction.
|
7780
7838
|
|
7781
|
-
=item exiftool -geotag a.log '-geotimeE<lt>${createdate}+01:00' dir
|
7839
|
+
=item C<exiftool -geotag a.log '-geotimeE<lt>${createdate}+01:00' dir>
|
7782
7840
|
|
7783
7841
|
Geotag images in C<dir> using CreateDate with the specified timezone. If
|
7784
7842
|
CreateDate already contained a timezone, then the timezone specified on the
|
7785
7843
|
command line is ignored.
|
7786
7844
|
|
7787
|
-
=item exiftool -geotag= a.jpg
|
7845
|
+
=item C<exiftool -geotag= a.jpg>
|
7788
7846
|
|
7789
7847
|
Delete GPS tags which may have been added by the geotag feature. Note that
|
7790
7848
|
this does not remove all GPS tags -- to do this instead use C<-gps:all=>.
|
7791
7849
|
|
7792
|
-
=item exiftool -xmp:geotag= a.jpg
|
7850
|
+
=item C<exiftool -xmp:geotag= a.jpg>
|
7793
7851
|
|
7794
7852
|
Delete XMP GPS tags which were added by the geotag feature.
|
7795
7853
|
|
7796
|
-
=item exiftool -xmp:geotag=track.log a.jpg
|
7854
|
+
=item C<exiftool -xmp:geotag=track.log a.jpg>
|
7797
7855
|
|
7798
7856
|
Geotag an image with XMP tags, using the time from DateTimeOriginal.
|
7799
7857
|
|
7800
|
-
=item exiftool -geotag a.log -geotag b.log -r dir
|
7858
|
+
=item C<exiftool -geotag a.log -geotag b.log -r dir>
|
7801
7859
|
|
7802
7860
|
Combine multiple track logs and geotag an entire directory tree of images.
|
7803
7861
|
|
7804
|
-
=item exiftool -geotag 'tracks/*.log' -r dir
|
7862
|
+
=item C<exiftool -geotag 'tracks/*.log' -r dir>
|
7805
7863
|
|
7806
7864
|
Read all track logs from the C<tracks> directory.
|
7807
7865
|
|
7808
|
-
=item exiftool -p gpx.fmt dir > out.gpx
|
7866
|
+
=item C<exiftool -p gpx.fmt dir E<gt> out.gpx>
|
7809
7867
|
|
7810
7868
|
Generate a GPX track log from all images in directory C<dir>. This example
|
7811
7869
|
uses the C<gpx.fmt> file included in the full ExifTool distribution package
|
@@ -7817,26 +7875,26 @@ and assumes that the images in C<dir> have all been previously geotagged.
|
|
7817
7875
|
|
7818
7876
|
=over 5
|
7819
7877
|
|
7820
|
-
=item cat a.jpg | exiftool
|
7878
|
+
=item C<cat a.jpg | exiftool ->
|
7821
7879
|
|
7822
7880
|
Extract information from stdin.
|
7823
7881
|
|
7824
|
-
=item exiftool image.jpg -thumbnailimage -b | exiftool
|
7882
|
+
=item C<exiftool image.jpg -thumbnailimage -b | exiftool ->
|
7825
7883
|
|
7826
7884
|
Extract information from an embedded thumbnail image.
|
7827
7885
|
|
7828
|
-
=item cat a.jpg | exiftool -iptc:keywords+=fantastic - > b.jpg
|
7886
|
+
=item C<cat a.jpg | exiftool -iptc:keywords+=fantastic - E<gt> b.jpg>
|
7829
7887
|
|
7830
7888
|
Add an IPTC keyword in a pipeline, saving output to a new file.
|
7831
7889
|
|
7832
|
-
=item curl -s http://a.domain.com/bigfile.jpg | exiftool -fast
|
7890
|
+
=item C<curl -s http://a.domain.com/bigfile.jpg | exiftool -fast ->
|
7833
7891
|
|
7834
7892
|
Extract information from an image over the internet using the cURL utility.
|
7835
7893
|
The B<-fast> option prevents exiftool from scanning for trailer information,
|
7836
7894
|
so only the meta information header is transferred.
|
7837
7895
|
|
7838
|
-
=item exiftool a.jpg -thumbnailimage -b | exiftool -comment=wow - |
|
7839
|
-
exiftool a.jpg -thumbnailimage'
|
7896
|
+
=item C<exiftool a.jpg -thumbnailimage -b | exiftool -comment=wow - |
|
7897
|
+
exiftool a.jpg -thumbnailimage'E<lt>=-'>
|
7840
7898
|
|
7841
7899
|
Add a comment to an embedded thumbnail image. (Why anyone would want to do
|
7842
7900
|
this I don't know, but I've included this as an example to illustrate the
|
@@ -7859,7 +7917,7 @@ the commands if B<-execute> was used).
|
|
7859
7917
|
|
7860
7918
|
=head1 AUTHOR
|
7861
7919
|
|
7862
|
-
Copyright 2003-
|
7920
|
+
Copyright 2003-2025, Phil Harvey
|
7863
7921
|
|
7864
7922
|
This is free software; you can redistribute it and/or modify it under the
|
7865
7923
|
same terms as Perl itself.
|