exiftool_vendored 13.10.0 → 13.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +82 -19
- data/bin/MANIFEST +6 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/arg_files/exif2xmp.args +4 -0
- data/bin/arg_files/xmp2exif.args +2 -1
- data/bin/build_geolocation +1 -1
- data/bin/exiftool +208 -150
- 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 +6 -6
- 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 +29 -18
- 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 +150 -46
- 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 +17 -8
- 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 +6 -2
- 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 +409 -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 +166 -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 +48 -20
- data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +206 -66
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +21 -303
- 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 +2 -2
- 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 +3449 -3435
- data/bin/lib/Image/ExifTool/TagNames.pod +164 -47
- 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 +3 -3
- 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/Vivo.pm +124 -0
- 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 +74 -43
- 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 +21 -16
- 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 +34 -12
- data/bin/lib/Image/ExifTool.pod +57 -46
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +4 -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.14';
|
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
|
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.14 --
|
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
|
@@ -5943,8 +6000,8 @@ name, a value of 1 is returned if any tag exists in the specified group, or
|
|
5943
6000
|
values of all matching tags are joined).
|
5944
6001
|
|
5945
6002
|
The B<-p> output iterates through the family 3 group names, with each
|
5946
|
-
sub-document producing additional output
|
5947
|
-
|
6003
|
+
sub-document producing additional output when combined with the B<-ee>
|
6004
|
+
(ExtractEmbedded) option.
|
5948
6005
|
|
5949
6006
|
If a specified tag does not exist, a minor warning is issued and the line
|
5950
6007
|
with the missing tag is not printed. However, the B<-f> option may be used
|
@@ -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.
|