exiftool_vendored 9.37.0 → 9.41.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +6 -14
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/Changes +74 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/MANIFEST +14 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/META.yml +1 -1
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/Makefile.PL +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/README +30 -30
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/exif2iptc.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/exif2xmp.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/gps2xmp.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptc2exif.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptc2xmp.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptcCore.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/pdf2xmp.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2exif.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2gps.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2iptc.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2pdf.args +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/config_files/ExifTool_config +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/config_files/convert_regions.config +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/exiftool +266 -226
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/gpx.fmt +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/gpx_wpt.fmt +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/kml.fmt +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/ExifTool.html +79 -54
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/MIE1.1-20070121.pdf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/Shift.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/AFCP.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/AIFF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/APE.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/APP12.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ASF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Apple.html +11 -8
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/BMP.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Canon.html +138 -14
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonCustom.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonRaw.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonVRD.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Casio.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Composite.html +19 -13
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DICOM.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DNG.html +0 -0
- data/bin/Image-ExifTool-9.41/html/TagNames/DPX.html +190 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DV.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DarwinCore.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DjVu.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/EXE.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/EXIF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Extra.html +13 -6
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FLAC.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FLIR.html +166 -2
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Flash.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FlashPix.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Font.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FotoStation.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FujiFilm.html +11 -1
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GE.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GIF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GIMP.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GPS.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GeoTiff.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/H264.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/HP.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/HTML.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ICC_Profile.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ID3.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/IPTC.html +3 -3
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ITC.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JFIF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JPEG.html +6 -4
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JVC.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Jpeg2000.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Kodak.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/KyoceraRaw.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/LNK.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Leaf.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/M2TS.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MIE.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MIFF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MNG.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPC.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPEG.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MWG.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MXF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Matroska.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Microsoft.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Minolta.html +30 -19
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MinoltaRaw.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Nikon.html +81 -60
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/NikonCapture.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/NikonCustom.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/OOXML.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Ogg.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Olympus.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/OpenEXR.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PDF.html +6 -6
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PGF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PICT.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PLIST.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PNG.html +25 -18
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PSP.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Panasonic.html +51 -14
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PanasonicRaw.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Pentax.html +23 -6
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhaseOne.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhotoCD.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhotoMechanic.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Photoshop.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PostScript.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PrintIM.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Qualcomm.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/QuickTime.html +404 -126
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RIFF.html +19 -13
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RSRC.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RTF.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Radiance.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Rawzor.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Real.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Reconyx.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Ricoh.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Samsung.html +27 -1
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sanyo.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Scalado.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Shortcuts.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sigma.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/SigmaRaw.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sony.html +491 -121
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/SonyIDC.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Stim.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Theora.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Torrent.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Unknown.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Vorbis.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/XMP.html +824 -175
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ZIP.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/iWork.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/index.html +7 -5
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/style.css +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/ancient_history.html +201 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/canon_raw.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/commentary.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/config.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/data_members.html +9 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/exiftool_pod.html +92 -71
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/faq.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/filename.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/geotag.html +13 -9
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/history.html +82 -201
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/htmldump.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/idiosyncracies.html +4 -2
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/index.html +46 -35
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/install.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/metafiles.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/overview.png +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/standards.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/struct.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/style.css +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/under.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/verbose.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/writing.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/File/RandomAccess.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/File/RandomAccess.pod +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool.pm +387 -331
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool.pod +101 -81
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AES.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AFCP.pm +14 -14
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AIFF.pm +17 -17
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/APE.pm +18 -18
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/APP12.pm +21 -21
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ASF.pm +48 -48
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Apple.pm +31 -19
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BMP.pm +4 -4
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BZZ.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BigTIFF.pm +36 -36
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BuildTagLookup.pm +12 -12
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Canon.pm +126 -38
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonCustom.pm +37 -37
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonRaw.pm +30 -30
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonVRD.pm +75 -75
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CaptureOne.pm +18 -18
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Casio.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset.pm +13 -13
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Arabic.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Baltic.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Cyrillic.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Greek.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Hebrew.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/JIS.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Latin.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Latin2.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacArabic.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacChineseCN.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacChineseTW.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacCroatian.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacCyrillic.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacGreek.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacHebrew.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacIceland.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacJapanese.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacKorean.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacLatin2.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRSymbol.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRoman.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRomanian.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacThai.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacTurkish.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/PDFDoc.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/ShiftJIS.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Symbol.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Thai.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Turkish.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Vietnam.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DICOM.pm +56 -17
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DNG.pm +85 -85
- data/bin/Image-ExifTool-9.41/lib/Image/ExifTool/DPX.pm +151 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DV.pm +6 -6
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DarwinCore.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DjVu.pm +14 -14
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/EXE.pm +47 -47
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Exif.pm +126 -116
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FLAC.pm +14 -14
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FLIR.pm +282 -22
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Fixup.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Flash.pm +41 -41
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FlashPix.pm +97 -97
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Font.pm +46 -46
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FotoStation.pm +21 -20
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FujiFilm.pm +40 -38
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GE.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GIF.pm +32 -32
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GIMP.pm +11 -11
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GPS.pm +3 -3
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GeoTiff.pm +19 -19
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Geotag.pm +69 -66
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/H264.pm +42 -42
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HP.pm +9 -9
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HTML.pm +16 -16
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HtmlDump.pm +10 -10
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ICC_Profile.pm +48 -48
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ID3.pm +84 -84
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/IPTC.pm +38 -38
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ITC.pm +11 -11
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Import.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/InDesign.pm +18 -18
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JPEG.pm +10 -6
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JPEGDigest.pm +4 -4
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JVC.pm +8 -8
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Jpeg2000.pm +50 -58
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Kodak.pm +15 -15
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/KyoceraRaw.pm +4 -4
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/LNK.pm +24 -24
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/cs.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/de.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/en_ca.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/en_gb.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/es.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/fi.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/fr.pm +1 -1
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/it.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ja.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ko.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/nl.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/pl.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ru.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/sv.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/tr.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/zh_cn.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/zh_tw.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Leaf.pm +11 -11
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/M2TS.pm +37 -37
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIE.pm +95 -95
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIEUnits.pod +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIFF.pm +17 -17
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MNG.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPC.pm +11 -11
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPEG.pm +28 -28
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPF.pm +22 -22
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MWG.pm +9 -9
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MXF.pm +46 -46
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MakerNotes.pm +61 -59
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Matroska.pm +27 -27
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Microsoft.pm +8 -8
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Minolta.pm +50 -28
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MinoltaRaw.pm +17 -17
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Nikon.pm +80 -63
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/NikonCapture.pm +29 -29
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/NikonCustom.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/OOXML.pm +20 -20
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Ogg.pm +19 -19
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Olympus.pm +3 -3
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/OpenEXR.pm +16 -16
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PDF.pm +126 -126
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PGF.pm +7 -7
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PICT.pm +18 -18
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PLIST.pm +39 -39
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PNG.pm +141 -95
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PPM.pm +11 -11
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PSP.pm +14 -14
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Panasonic.pm +82 -37
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PanasonicRaw.pm +40 -40
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Pentax.pm +86 -14
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhaseOne.pm +36 -36
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhotoCD.pm +4 -4
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhotoMechanic.pm +12 -12
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Photoshop.pm +23 -23
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PostScript.pm +36 -36
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PrintIM.pm +10 -10
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Qualcomm.pm +5 -5
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/QuickTime.pm +528 -219
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/README +5 -3
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RIFF.pm +40 -32
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RSRC.pm +15 -15
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RTF.pm +15 -15
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Radiance.pm +9 -9
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Rawzor.pm +19 -19
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Real.pm +43 -43
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Reconyx.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Ricoh.pm +24 -24
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Samsung.pm +41 -15
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sanyo.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Scalado.pm +5 -5
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Shift.pl +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Shortcuts.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sigma.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/SigmaRaw.pm +56 -56
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sony.pm +450 -166
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/SonyIDC.pm +9 -9
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Stim.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagInfoXML.pm +6 -4
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagLookup.pm +1707 -1468
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagNames.pod +568 -102
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Theora.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Torrent.pm +11 -11
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Unknown.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Vorbis.pm +5 -5
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteCanonRaw.pl +51 -51
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteExif.pl +273 -273
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteIPTC.pl +44 -44
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePDF.pl +45 -39
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePNG.pl +86 -40
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePhotoshop.pl +27 -27
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePostScript.pl +47 -47
- data/bin/Image-ExifTool-9.41/lib/Image/ExifTool/WriteQuickTime.pl +344 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteXMP.pl +112 -112
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Writer.pl +428 -360
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMP.pm +195 -104
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMP2.pl +1 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMPStruct.pl +53 -52
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ZIP.pm +50 -50
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/iWork.pm +17 -17
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/perl-Image-ExifTool.spec +31 -31
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AIFF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AIFF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ASF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ASF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BMP.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BMP_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BigTIFF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BigTIFF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_4.out +5 -7
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_11.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_12.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_8.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_9.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon_2.out +4 -3
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DICOM.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DICOM_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG_3.out +0 -0
- data/bin/Image-ExifTool-9.41/t/DPX.t +28 -0
- data/bin/Image-ExifTool-9.41/t/DPX_2.out +35 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DV.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DV_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DjVu.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DjVu_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_16.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_17.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_20.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_21.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_22.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_23.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_24.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_25.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_26.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_8.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_9.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FlashPix.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FlashPix_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIMP.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIMP_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag.t +18 -1
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_8.out +0 -0
- data/bin/Image-ExifTool-9.41/t/Geotag_9.out +7 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/HTML.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/HTML_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_8.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ITC.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ITC_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/KyoceraRaw.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/KyoceraRaw_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/LNK.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/LNK_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_1.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_10.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_11.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_12.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_13.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_14.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_15.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_16.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_17.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_18.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_8.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_9.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/M2TS.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/M2TS_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIFF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIFF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MP3.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MP3_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MXF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MXF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Matroska.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Matroska_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_8.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/OpenEXR.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/OpenEXR_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_10.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_11.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_12.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_14.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_15.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_16.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_17.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_18.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_19.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_20.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_22.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_8.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_9.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PGF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PGF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PICT.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PICT_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG.t +31 -1
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_4.out +0 -0
- data/bin/Image-ExifTool-9.41/t/PNG_5.out +17 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PSP.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PSP_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoCD.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoCD_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript_3.out +0 -0
- data/bin/Image-ExifTool-9.41/t/QuickTime.t +54 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/QuickTime_2.out +10 -8
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/QuickTime_3.out +10 -8
- data/bin/Image-ExifTool-9.41/t/QuickTime_4.out +16 -0
- data/bin/Image-ExifTool-9.41/t/QuickTime_5.out +12 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RTF.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RTF_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Radiance.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Radiance_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/TestLib.pm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Torrent.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Torrent_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Vorbis.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Vorbis_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer.t +53 -1
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_10.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_11.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_13.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_14.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_15.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_16.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_17.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_18.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_19.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_22.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_24.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_25.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_26.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_27.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_28.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_29.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_30.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_31.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_32.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_33.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_34.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_35.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_36.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_37.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_38.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_39.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_40.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_41.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_42.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_43.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_44.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_45.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_46.out +8 -6
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_47.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_48.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_50.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_51.out +0 -0
- data/bin/Image-ExifTool-9.41/t/Writer_52.out +22 -0
- data/bin/Image-ExifTool-9.41/t/Writer_53.out +33 -0
- data/bin/Image-ExifTool-9.41/t/Writer_54.out +2 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_9.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_10.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_11.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_12.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_13.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_14.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_15.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_16.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_17.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_18.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_19.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_20.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_21.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_22.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_23.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_24.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_25.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_26.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_27.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_28.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_29.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_30.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_31.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_32.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_34.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_36.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_37.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_39.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_40.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_41.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_8.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_9.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP.t +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_2.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_3.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_4.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_5.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_6.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_7.out +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/AFCP.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/AIFF.aif +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/APE.ape +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/APE.mpc +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ASF.wmv +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/BMP.bmp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/BigTIFF.btf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Canon.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Canon1DmkIII.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonRaw.cr2 +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonRaw.crw +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonVRD.vrd +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CaptureOne.eip +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Casio.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Casio2.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CasioQVCI.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DICOM.dcm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DNG.dng +0 -0
- data/bin/Image-ExifTool-9.41/t/images/DPX.dpx +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DV.dv +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DjVu.djvu +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.elf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.exe +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.macho +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExifTool.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExifTool.tif +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExtendedXMP.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLAC.flac +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLAC.ogg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLIR.fpf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLIR.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Flash.flv +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Flash.swf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FlashPix.ppt +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.afm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.dfont +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfa +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfb +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.ttf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FotoStation.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FujiFilm.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FujiFilm.raf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GE.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GIF.gif +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GIMP.xcf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GPS.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GeoTiff.tif +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.gpx +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.igc +0 -0
- data/bin/Image-ExifTool-9.41/t/images/Geotag.kml +55 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.log +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.xml +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag2.log +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/HTML.html +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/IPTC.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ITC.itc +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/InDesign.indd +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/JVC.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/JVC2.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Jpeg2000.j2c +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Jpeg2000.jp2 +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Kodak.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/KyoceraRaw.raw +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/LNK.lnk +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/M2TS.mts +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MIE.mie +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MIFF.miff +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MP3.mp3 +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MWG.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MXF.mxf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Matroska.mkv +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Minolta.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Minolta.mrw +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Nikon.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Nikon.nef +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/NikonD2Hs.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/NikonD70.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OOXML.docx +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Olympus.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Olympus2.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OlympusE1.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OpenDoc.ods +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OpenEXR.exr +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PDF.pdf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PDF2.pdf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PGF.pgf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PICT.pict +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PLIST-bin.plist +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PLIST-xml.plist +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PNG.png +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PPM.ppm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PSP.psp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Panasonic.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Panasonic.rw2 +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Pentax.avi +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Pentax.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PhotoCD.pcd +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PhotoMechanic.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Photoshop.psd +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PostScript.eps +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/QuickTime.m4a +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/QuickTime.mov +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.avi +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.wav +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.webp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RTF.rtf +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Radiance.hdr +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.ra +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.ram +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.rm +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Ricoh.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Ricoh2.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sanyo.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sigma.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sigma.x3f +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/SigmaDP2.x3f +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sony.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sony.pmp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Torrent.torrent +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Unknown.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Vorbis.ogg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Writer.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.inx +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.jpg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.svg +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.xml +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.xmp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP2.xmp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP3.xmp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP4.xmp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP5.xmp +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ZIP.gz +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ZIP.zip +0 -0
- data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/iWork.numbers +0 -0
- data/lib/exiftool_vendored.rb +11 -3
- data/lib/exiftool_vendored/version.rb +1 -1
- data/lib/exiftool_vendored/version_extractor.rb +5 -7
- metadata +942 -886
- data/bin/Image-ExifTool-9.37/t/QuickTime.t +0 -31
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
28
28
|
%jpegMarker %specialTags);
|
29
29
|
|
30
|
-
$VERSION = '9.
|
30
|
+
$VERSION = '9.41';
|
31
31
|
$RELEASE = '';
|
32
32
|
@ISA = qw(Exporter);
|
33
33
|
%EXPORT_TAGS = (
|
@@ -123,8 +123,8 @@ sub ReadValue($$$$$;$);
|
|
123
123
|
# unless tweaked in BuildTagLookup::GetTableOrder().
|
124
124
|
@loadAllTables = qw(
|
125
125
|
PhotoMechanic Exif GeoTiff CanonRaw KyoceraRaw MinoltaRaw PanasonicRaw
|
126
|
-
SigmaRaw JPEG GIMP Jpeg2000 GIF BMP BMP::OS2 PICT PNG MNG DjVu OpenEXR
|
127
|
-
PGF PSP PhotoCD Radiance PDF PostScript Photoshop::Header FujiFilm::RAF
|
126
|
+
SigmaRaw JPEG GIMP Jpeg2000 GIF BMP BMP::OS2 PICT PNG MNG DjVu DPX OpenEXR
|
127
|
+
MIFF PGF PSP PhotoCD Radiance PDF PostScript Photoshop::Header FujiFilm::RAF
|
128
128
|
FujiFilm::IFD Sony::SRF2 Sony::SR2SubIFD Sony::PMP ITC ID3 Vorbis Ogg APE
|
129
129
|
APE::NewHeader APE::OldHeader MPC MPEG::Audio MPEG::Video MPEG::Xing M2TS
|
130
130
|
QuickTime QuickTime::ImageFile Matroska MXF DV Flash Flash::FLV Real::Media
|
@@ -167,16 +167,16 @@ $defaultLang = 'en'; # default language
|
|
167
167
|
BMP PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV OGG FLAC APE MPC
|
168
168
|
MKV MXF DV PMP IND PGF ICC ITC FLIR FPF HTML VRD RTF XCF QTIF
|
169
169
|
FPX PICT ZIP GZIP PLIST RAR BZ2 TAR RWZ EXE EXR HDR CHM LNK WMF
|
170
|
-
AVC DEX RAW Font RSRC M2TS PHP Torrent MP3 DICM PCD);
|
170
|
+
AVC DEX DPX RAW Font RSRC M2TS PHP Torrent MP3 DICM PCD);
|
171
171
|
|
172
172
|
# file types that we can write (edit)
|
173
173
|
my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM
|
174
|
-
EPS X3F PS PDF ICC VRD JP2 EXIF AI AIT IND);
|
174
|
+
EPS X3F PS PDF ICC VRD JP2 EXIF AI AIT IND MOV);
|
175
175
|
my %writeTypes; # lookup for writable file types (hash filled if required)
|
176
176
|
|
177
177
|
# file extensions that we can't write for various base types
|
178
178
|
%noWriteFile = (
|
179
|
-
TIFF => [ qw(3FR DCR K25 KDC
|
179
|
+
TIFF => [ qw(3FR DCR K25 KDC ) ],
|
180
180
|
XMP => [ 'SVG' ],
|
181
181
|
JP2 => [ 'J2C', 'JPC' ],
|
182
182
|
);
|
@@ -240,6 +240,7 @@ my %fileTypeLookup = (
|
|
240
240
|
DOT => ['FPX', 'Microsoft Word Template'],
|
241
241
|
DOTM => [['ZIP','FPX'], 'Office Open XML Document Template Macro-enabled'],
|
242
242
|
DOTX => [['ZIP','FPX'], 'Office Open XML Document Template'],
|
243
|
+
DPX => ['DPX', 'Digital Picture Exchange' ],
|
243
244
|
DV => ['DV', 'Digital Video'],
|
244
245
|
DVB => ['MOV', 'Digital Video Broadcasting'],
|
245
246
|
DYLIB=> ['EXE', 'Mach-O Dynamic Link Library'],
|
@@ -489,6 +490,7 @@ my %fileDescription = (
|
|
489
490
|
DOT => 'application/msword',
|
490
491
|
DOTM => 'application/vnd.ms-word.template.macroEnabledTemplate',
|
491
492
|
DOTX => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
|
493
|
+
DPX => 'image/x-dpx',
|
492
494
|
DV => 'video/x-dv',
|
493
495
|
EIP => 'application/x-captureone', #(NC)
|
494
496
|
EPS => 'application/postscript',
|
@@ -693,6 +695,7 @@ my %moduleName = (
|
|
693
695
|
DEX => "dex\n035\0",
|
694
696
|
DICM => '(.{128}DICM|\0[\x02\x04\x06\x08]\0[\0-\x20]|[\x02\x04\x06\x08]\0[\0-\x20]\0)',
|
695
697
|
DOCX => 'PK\x03\x04',
|
698
|
+
DPX => '(SDPX|XPDS)',
|
696
699
|
DV => '\x1f\x07\0[\x3f\xbf]', # (not tested if extension recognized)
|
697
700
|
EPS => '(%!PS|%!Ad|\xc5\xd0\xd3\xc6)',
|
698
701
|
EXE => '(MZ|\xca\xfe\xba\xbe|\xfe\xed\xfa[\xce\xcf]|[\xce\xcf]\xfa\xed\xfe|Joy!peff|\x7fELF|#!\s*/\S*bin/|!<arch>\x0a)',
|
@@ -719,7 +722,7 @@ my %moduleName = (
|
|
719
722
|
MIE => '~[\x10\x18]\x04.0MIE',
|
720
723
|
MIFF => 'id=ImageMagick',
|
721
724
|
MKV => '\x1a\x45\xdf\xa3',
|
722
|
-
MOV => '.{4}(free|skip|wide|ftyp|pnot|PICT|pict|moov|mdat|junk|uuid)',
|
725
|
+
MOV => '.{4}(free|skip|wide|ftyp|pnot|PICT|pict|moov|mdat|junk|uuid)', # (duplicated in WriteQuickTime.pl !!)
|
723
726
|
# MP3 => difficult to rule out
|
724
727
|
MPC => '(MP\+|ID3)',
|
725
728
|
MPEG => '\0\0\x01[\xb0-\xbf]',
|
@@ -843,8 +846,26 @@ sub DummyWriteProc { return 1; }
|
|
843
846
|
GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
|
844
847
|
VARS => { NO_ID => 1 }, # tag ID's aren't meaningful for these tags
|
845
848
|
WRITE_PROC => \&DummyWriteProc,
|
846
|
-
Error => {
|
847
|
-
|
849
|
+
Error => {
|
850
|
+
Priority => 0,
|
851
|
+
Groups => \%allGroupsExifTool,
|
852
|
+
Notes => q{
|
853
|
+
returns errors that may have occurred while reading or writing a file. Any
|
854
|
+
Error will prevent the file from being processed. Minor errors may be
|
855
|
+
downgraded to warnings with the -m or IgnoreMinorErrors option
|
856
|
+
},
|
857
|
+
},
|
858
|
+
Warning => {
|
859
|
+
Priority => 0,
|
860
|
+
Groups => \%allGroupsExifTool,
|
861
|
+
Notes => q{
|
862
|
+
returns warnings that may have occurred while reading or writing a file.
|
863
|
+
Use the -a or Duplicates option to see all warnings if more than one
|
864
|
+
occurred. Minor warnings may be ignored with the -m or IgnoreMinorErrors
|
865
|
+
option. Minor warnings with a capital "M" in the "[Minor]" designation
|
866
|
+
indicate that the processing is affected by ignoring the warning
|
867
|
+
},
|
868
|
+
},
|
848
869
|
Comment => {
|
849
870
|
Notes => 'comment embedded in JPEG, GIF89a or PPM/PGM/PBM image',
|
850
871
|
Writable => 1,
|
@@ -901,7 +922,12 @@ sub DummyWriteProc { return 1; }
|
|
901
922
|
},
|
902
923
|
PrintConv => \&ConvertFileSize,
|
903
924
|
},
|
904
|
-
FileType
|
925
|
+
FileType => {
|
926
|
+
Notes => q{
|
927
|
+
a short description of the file type. As a general rule, this is the
|
928
|
+
extension commonly used for the file, but there are exceptions to this rule
|
929
|
+
},
|
930
|
+
},
|
905
931
|
FileModifyDate => {
|
906
932
|
Description => 'File Modification Date/Time',
|
907
933
|
Notes => q{
|
@@ -986,7 +1012,7 @@ sub DummyWriteProc { return 1; }
|
|
986
1012
|
return $str;
|
987
1013
|
},
|
988
1014
|
},
|
989
|
-
MIMEType => { },
|
1015
|
+
MIMEType => { Notes => 'the MIME type of the source file' },
|
990
1016
|
ImageWidth => { },
|
991
1017
|
ImageHeight => { },
|
992
1018
|
XResolution => { },
|
@@ -1098,6 +1124,7 @@ sub DummyWriteProc { return 1; }
|
|
1098
1124
|
ExifToolVersion => {
|
1099
1125
|
Description => 'ExifTool Version Number',
|
1100
1126
|
Groups => \%allGroupsExifTool,
|
1127
|
+
Notes => 'the version of ExifTool currently running',
|
1101
1128
|
},
|
1102
1129
|
RAFVersion => { },
|
1103
1130
|
JPEGDigest => {
|
@@ -1346,10 +1373,10 @@ sub new
|
|
1346
1373
|
GetTagTable("Image::ExifTool::Exif::Main");
|
1347
1374
|
|
1348
1375
|
$self->ClearOptions(); # create default options hash
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1376
|
+
$$self{VALUE} = { }; # must initialize this for warning messages
|
1377
|
+
$$self{DEL_GROUP} = { }; # lookup for groups to delete when writing
|
1378
|
+
$$self{SAVE_COUNT} = 0; # count calls to SaveNewValues()
|
1379
|
+
$$self{FILE_SEQUENCE} = 0; # sequence number for files when reading
|
1353
1380
|
|
1354
1381
|
# initialize our new groups for writing
|
1355
1382
|
$self->SetNewGroups(@defaultWriteGroups);
|
@@ -1375,8 +1402,8 @@ sub new
|
|
1375
1402
|
# use Image::ExifTool 'ImageInfo';
|
1376
1403
|
# my $info = ImageInfo($file, 'DateTimeOriginal', 'ImageSize');
|
1377
1404
|
# - or -
|
1378
|
-
# my $
|
1379
|
-
# my $info = $
|
1405
|
+
# my $et = new Image::ExifTool;
|
1406
|
+
# my $info = $et->ImageInfo($file, \@tagList, {Sort=>'Group0'} );
|
1380
1407
|
sub ImageInfo($;@)
|
1381
1408
|
{
|
1382
1409
|
local $_;
|
@@ -1387,16 +1414,16 @@ sub ImageInfo($;@)
|
|
1387
1414
|
} else {
|
1388
1415
|
$self = new Image::ExifTool;
|
1389
1416
|
}
|
1390
|
-
my %saveOptions = %{
|
1417
|
+
my %saveOptions = %{$$self{OPTIONS}}; # save original options
|
1391
1418
|
|
1392
1419
|
# initialize file information
|
1393
|
-
|
1420
|
+
$$self{FILENAME} = $$self{RAF} = undef;
|
1394
1421
|
|
1395
1422
|
$self->ParseArguments(@_); # parse our function arguments
|
1396
1423
|
$self->ExtractInfo(undef); # extract meta information from image
|
1397
1424
|
my $info = $self->GetInfo(undef); # get requested information
|
1398
1425
|
|
1399
|
-
|
1426
|
+
$$self{OPTIONS} = \%saveOptions; # restore original options
|
1400
1427
|
|
1401
1428
|
return $info; # return requested information
|
1402
1429
|
}
|
@@ -1475,7 +1502,7 @@ sub Options($$;@)
|
|
1475
1502
|
delete $$self{ESCAPE_PROC};
|
1476
1503
|
}
|
1477
1504
|
# must forget saved values since they depend on Escape method
|
1478
|
-
|
1505
|
+
$$self{BOTH} = { };
|
1479
1506
|
}
|
1480
1507
|
$$options{$param} = $newVal;
|
1481
1508
|
}
|
@@ -1497,7 +1524,7 @@ sub ClearOptions($)
|
|
1497
1524
|
# ! DON'T FORGET!! When adding any new option, must !
|
1498
1525
|
# ! decide how it is handled in SetNewValuesFromFile() !
|
1499
1526
|
# +-----------------------------------------------------+
|
1500
|
-
|
1527
|
+
$$self{OPTIONS} = {
|
1501
1528
|
# Binary => undef, # flag to extract binary values even if tag not specified
|
1502
1529
|
# ByteOrder => undef, # default byte order when creating EXIF information
|
1503
1530
|
Charset => 'UTF8', # character set for converting Unicode characters
|
@@ -1570,7 +1597,7 @@ sub ExtractInfo($;@)
|
|
1570
1597
|
{
|
1571
1598
|
local $_;
|
1572
1599
|
my $self = shift;
|
1573
|
-
my $options =
|
1600
|
+
my $options = $$self{OPTIONS}; # pointer to current options
|
1574
1601
|
my (%saveOptions, $reEntry, $rsize, $type);
|
1575
1602
|
|
1576
1603
|
# check for internal ReEntry option to allow recursive calls to ExtractInfo
|
@@ -1585,21 +1612,21 @@ sub ExtractInfo($;@)
|
|
1585
1612
|
EXIF_POS => $$self{EXIF_POS},
|
1586
1613
|
FILE_TYPE => $$self{FILE_TYPE},
|
1587
1614
|
};
|
1588
|
-
|
1615
|
+
$$self{RAF} = new File::RandomAccess($_[0]);
|
1589
1616
|
$$self{PROCESSED} = { };
|
1590
1617
|
delete $$self{EXIF_DATA};
|
1591
1618
|
delete $$self{EXIF_POS};
|
1592
1619
|
} else {
|
1593
|
-
if (defined $_[0] or
|
1620
|
+
if (defined $_[0] or $$options{HtmlDump}) {
|
1594
1621
|
%saveOptions = %$options; # save original options
|
1595
1622
|
|
1596
1623
|
# require duplicates for html dump
|
1597
|
-
$self->Options(Duplicates => 1) if
|
1624
|
+
$self->Options(Duplicates => 1) if $$options{HtmlDump};
|
1598
1625
|
|
1599
1626
|
if (defined $_[0]) {
|
1600
1627
|
# only initialize filename if called with arguments
|
1601
|
-
|
1602
|
-
|
1628
|
+
$$self{FILENAME} = undef; # name of file (or '' if we didn't open it)
|
1629
|
+
$$self{RAF} = undef; # RandomAccess object reference
|
1603
1630
|
|
1604
1631
|
$self->ParseArguments(@_); # initialize from our arguments
|
1605
1632
|
}
|
@@ -1607,22 +1634,22 @@ sub ExtractInfo($;@)
|
|
1607
1634
|
# initialize ExifTool object members
|
1608
1635
|
$self->Init();
|
1609
1636
|
|
1610
|
-
delete
|
1611
|
-
delete
|
1637
|
+
delete $$self{MAKER_NOTE_FIXUP}; # fixup information for extracted maker notes
|
1638
|
+
delete $$self{MAKER_NOTE_BYTE_ORDER};
|
1612
1639
|
|
1613
1640
|
# return our version number
|
1614
|
-
my $reqAll =
|
1641
|
+
my $reqAll = $$self{OPTIONS}{RequestAll};
|
1615
1642
|
$self->FoundTag('ExifToolVersion', "$VERSION$RELEASE");
|
1616
|
-
$self->FoundTag('Now', TimeNow()) if
|
1617
|
-
$self->FoundTag('NewGUID', NewGUID()) if
|
1643
|
+
$self->FoundTag('Now', TimeNow()) if $$self{REQ_TAG_LOOKUP}{now} or $reqAll;
|
1644
|
+
$self->FoundTag('NewGUID', NewGUID()) if $$self{REQ_TAG_LOOKUP}{newguid} or $reqAll;
|
1618
1645
|
# generate sequence number if necessary
|
1619
|
-
if (
|
1646
|
+
if ($$self{REQ_TAG_LOOKUP}{filesequence} or $reqAll) {
|
1620
1647
|
$self->FoundTag('FileSequence', $$self{FILE_SEQUENCE});
|
1621
1648
|
}
|
1622
1649
|
++$$self{FILE_SEQUENCE}; # count files read
|
1623
1650
|
}
|
1624
|
-
my $filename =
|
1625
|
-
my $raf =
|
1651
|
+
my $filename = $$self{FILENAME}; # image file name ('' if already open)
|
1652
|
+
my $raf = $$self{RAF}; # RandomAccess object
|
1626
1653
|
|
1627
1654
|
local *EXIFTOOL_FILE; # avoid clashes with global namespace
|
1628
1655
|
|
@@ -1653,8 +1680,8 @@ sub ExtractInfo($;@)
|
|
1653
1680
|
$raf = new File::RandomAccess(\*EXIFTOOL_FILE);
|
1654
1681
|
# patch to force pipe to be buffered because seek returns success
|
1655
1682
|
# in Windows cmd shell pipe even though it really failed
|
1656
|
-
|
1657
|
-
|
1683
|
+
$$raf{TESTED} = -1 if $filename eq '-' or $filename =~ /\|$/;
|
1684
|
+
$$self{RAF} = $raf;
|
1658
1685
|
} else {
|
1659
1686
|
$self->Error('Error opening file');
|
1660
1687
|
}
|
@@ -1666,10 +1693,10 @@ sub ExtractInfo($;@)
|
|
1666
1693
|
if ($raf) {
|
1667
1694
|
if ($reEntry) {
|
1668
1695
|
# we already set these tags
|
1669
|
-
} elsif (not
|
1696
|
+
} elsif (not $$raf{FILE_PT}) {
|
1670
1697
|
# get file size from image in memory
|
1671
|
-
$self->FoundTag('FileSize', length ${
|
1672
|
-
} elsif (-f
|
1698
|
+
$self->FoundTag('FileSize', length ${$$raf{BUFF_PT}});
|
1699
|
+
} elsif (-f $$raf{FILE_PT}) {
|
1673
1700
|
# get file size and last modified time if this is a plain file
|
1674
1701
|
my $fileSize = -s _;
|
1675
1702
|
my $fileTime = -M _;
|
@@ -1728,7 +1755,7 @@ sub ExtractInfo($;@)
|
|
1728
1755
|
$self->Warn("Skipped unknown $skip byte header");
|
1729
1756
|
}
|
1730
1757
|
# save file type in member variable
|
1731
|
-
|
1758
|
+
$$self{FILE_TYPE} = $type;
|
1732
1759
|
$dirInfo{Parent} = ($type eq 'TIFF') ? $tiffType : $type;
|
1733
1760
|
my $module = $moduleName{$type};
|
1734
1761
|
$module = $type unless defined $module;
|
@@ -1783,35 +1810,35 @@ sub ExtractInfo($;@)
|
|
1783
1810
|
$self->Error($err);
|
1784
1811
|
}
|
1785
1812
|
# extract binary EXIF data block only if requested
|
1786
|
-
if (defined
|
1787
|
-
(
|
1813
|
+
if (defined $$self{EXIF_DATA} and length $$self{EXIF_DATA} > 16 and
|
1814
|
+
($$self{REQ_TAG_LOOKUP}{exif} or
|
1788
1815
|
# (not extracted normally, so check TAGS_FROM_FILE)
|
1789
|
-
(
|
1816
|
+
($$self{TAGS_FROM_FILE} and not $$self{EXCL_TAG_LOOKUP}{exif})))
|
1790
1817
|
{
|
1791
|
-
$self->FoundTag('EXIF',
|
1818
|
+
$self->FoundTag('EXIF', $$self{EXIF_DATA});
|
1792
1819
|
}
|
1793
1820
|
unless ($reEntry) {
|
1794
|
-
|
1821
|
+
$$self{PATH} = [ ]; # reset PATH
|
1795
1822
|
# calculate Composite tags
|
1796
|
-
$self->BuildCompositeTags() if
|
1823
|
+
$self->BuildCompositeTags() if $$options{Composite};
|
1797
1824
|
# do our HTML dump if requested
|
1798
|
-
if (
|
1825
|
+
if ($$self{HTML_DUMP}) {
|
1799
1826
|
$raf->Seek(0, 2); # seek to end of file
|
1800
|
-
|
1801
|
-
my $pos =
|
1802
|
-
$pos = (
|
1803
|
-
my $dataPt = defined
|
1804
|
-
undef $dataPt if defined
|
1805
|
-
my $success =
|
1806
|
-
|
1807
|
-
|
1808
|
-
$self->Warn("Error reading
|
1827
|
+
$$self{HTML_DUMP}->FinishTiffDump($self, $raf->Tell());
|
1828
|
+
my $pos = $$options{HtmlDumpBase};
|
1829
|
+
$pos = ($$self{FIRST_EXIF_POS} || 0) unless defined $pos;
|
1830
|
+
my $dataPt = defined $$self{EXIF_DATA} ? \$$self{EXIF_DATA} : undef;
|
1831
|
+
undef $dataPt if defined $$self{EXIF_POS} and $pos != $$self{EXIF_POS};
|
1832
|
+
my $success = $$self{HTML_DUMP}->Print($raf, $dataPt, $pos,
|
1833
|
+
$$options{TextOut}, $$options{HtmlDump},
|
1834
|
+
$$self{FILENAME} ? "HTML Dump ($$self{FILENAME})" : 'HTML Dump');
|
1835
|
+
$self->Warn("Error reading $$self{HTML_DUMP}{ERROR}") if $success < 0;
|
1809
1836
|
}
|
1810
1837
|
}
|
1811
1838
|
if ($filename) {
|
1812
1839
|
$raf->Close(); # close the file if we opened it
|
1813
1840
|
# process the resource fork as an embedded file on Mac filesystems
|
1814
|
-
if ($rsize and
|
1841
|
+
if ($rsize and $$options{ExtractEmbedded}) {
|
1815
1842
|
local *RESOURCE_FILE;
|
1816
1843
|
if (Open(\*RESOURCE_FILE, "$filename/..namedfork/rsrc")) {
|
1817
1844
|
$$self{DOC_NUM} = $$self{DOC_COUNT} + 1;
|
@@ -1827,7 +1854,7 @@ sub ExtractInfo($;@)
|
|
1827
1854
|
}
|
1828
1855
|
|
1829
1856
|
# restore original options
|
1830
|
-
%saveOptions and
|
1857
|
+
%saveOptions and $$self{OPTIONS} = \%saveOptions;
|
1831
1858
|
|
1832
1859
|
if ($reEntry) {
|
1833
1860
|
# restore necessary members when exiting re-entrant code
|
@@ -1835,7 +1862,7 @@ sub ExtractInfo($;@)
|
|
1835
1862
|
}
|
1836
1863
|
|
1837
1864
|
# ($type may be undef without an Error when processing sub-documents)
|
1838
|
-
return 0 if not defined $type or exists
|
1865
|
+
return 0 if not defined $type or exists $$self{VALUE}{Error};
|
1839
1866
|
return 1;
|
1840
1867
|
}
|
1841
1868
|
|
@@ -1855,9 +1882,9 @@ sub GetInfo($;@)
|
|
1855
1882
|
my %saveOptions;
|
1856
1883
|
|
1857
1884
|
unless (@_ and not defined $_[0]) {
|
1858
|
-
%saveOptions = %{
|
1885
|
+
%saveOptions = %{$$self{OPTIONS}}; # save original options
|
1859
1886
|
# must set FILENAME so it isn't parsed from the arguments
|
1860
|
-
|
1887
|
+
$$self{FILENAME} = '' unless defined $$self{FILENAME};
|
1861
1888
|
$self->ParseArguments(@_);
|
1862
1889
|
}
|
1863
1890
|
|
@@ -1866,7 +1893,7 @@ sub GetInfo($;@)
|
|
1866
1893
|
|
1867
1894
|
# build hash of tag information
|
1868
1895
|
my (%info, %ignored);
|
1869
|
-
my $conv =
|
1896
|
+
my $conv = $$self{OPTIONS}{PrintConv} ? 'PrintConv' : 'ValueConv';
|
1870
1897
|
foreach (@$rtnTags) {
|
1871
1898
|
my $val = $self->GetValue($_, $conv);
|
1872
1899
|
defined $val or $ignored{$_} = 1, next;
|
@@ -1901,14 +1928,14 @@ sub GetInfo($;@)
|
|
1901
1928
|
}
|
1902
1929
|
|
1903
1930
|
# remove ignored tags from the list
|
1904
|
-
my $reqTags =
|
1931
|
+
my $reqTags = $$self{REQUESTED_TAGS} || [ ];
|
1905
1932
|
if (%ignored) {
|
1906
1933
|
if (not @$reqTags) {
|
1907
1934
|
my @goodTags;
|
1908
1935
|
foreach (@$rtnTags) {
|
1909
1936
|
push @goodTags, $_ unless $ignored{$_};
|
1910
1937
|
}
|
1911
|
-
$rtnTags =
|
1938
|
+
$rtnTags = $$self{FOUND_TAGS} = \@goodTags;
|
1912
1939
|
} elsif (@$wildTags) {
|
1913
1940
|
# only remove tags specified by wildcard
|
1914
1941
|
my @goodTags;
|
@@ -1922,22 +1949,22 @@ sub GetInfo($;@)
|
|
1922
1949
|
}
|
1923
1950
|
++$i;
|
1924
1951
|
}
|
1925
|
-
$rtnTags =
|
1952
|
+
$rtnTags = $$self{FOUND_TAGS} = \@goodTags;
|
1926
1953
|
}
|
1927
1954
|
}
|
1928
1955
|
|
1929
1956
|
# return sorted tag list if provided with a list reference
|
1930
|
-
if (
|
1957
|
+
if ($$self{IO_TAG_LIST}) {
|
1931
1958
|
# use file order by default if no tags specified
|
1932
1959
|
# (no such thing as 'Input' order in this case)
|
1933
|
-
my $sort =
|
1960
|
+
my $sort = $$self{OPTIONS}{Sort};
|
1934
1961
|
$sort = 'File' unless @$reqTags or ($sort and $sort ne 'Input');
|
1935
1962
|
# return tags in specified sort order
|
1936
|
-
@{
|
1963
|
+
@{$$self{IO_TAG_LIST}} = $self->GetTagList($rtnTags, $sort, $$self{OPTIONS}{Sort2});
|
1937
1964
|
}
|
1938
1965
|
|
1939
1966
|
# restore original options
|
1940
|
-
%saveOptions and
|
1967
|
+
%saveOptions and $$self{OPTIONS} = \%saveOptions;
|
1941
1968
|
|
1942
1969
|
return \%info;
|
1943
1970
|
}
|
@@ -1953,7 +1980,7 @@ sub CombineInfo($;@)
|
|
1953
1980
|
my $self = shift;
|
1954
1981
|
my (%combinedInfo, $info, $tag, %haveInfo);
|
1955
1982
|
|
1956
|
-
if (
|
1983
|
+
if ($$self{OPTIONS}{Duplicates}) {
|
1957
1984
|
while ($info = shift) {
|
1958
1985
|
foreach $tag (keys %$info) {
|
1959
1986
|
$combinedInfo{$tag} = $$info{$tag};
|
@@ -1990,7 +2017,7 @@ sub GetTagList($;$$$)
|
|
1990
2017
|
} elsif (ref $info eq 'ARRAY') {
|
1991
2018
|
$foundTags = $info;
|
1992
2019
|
}
|
1993
|
-
my $fileOrder =
|
2020
|
+
my $fileOrder = $$self{FILE_ORDER};
|
1994
2021
|
|
1995
2022
|
if ($foundTags) {
|
1996
2023
|
# make sure a FILE_ORDER entry exists for all tags
|
@@ -2001,9 +2028,9 @@ sub GetTagList($;$$$)
|
|
2001
2028
|
}
|
2002
2029
|
} else {
|
2003
2030
|
$sort = $info if $info and not $sort;
|
2004
|
-
$foundTags =
|
2031
|
+
$foundTags = $$self{FOUND_TAGS} || $self->SetFoundTags() or return undef;
|
2005
2032
|
}
|
2006
|
-
$sort or $sort =
|
2033
|
+
$sort or $sort = $$self{OPTIONS}{Sort};
|
2007
2034
|
|
2008
2035
|
# return original list if no sort order specified
|
2009
2036
|
return @$foundTags unless $sort and $sort ne 'Input';
|
@@ -2023,7 +2050,7 @@ sub GetTagList($;$$$)
|
|
2023
2050
|
$num or $num = $groupCount{$group} = ++$numGroups;
|
2024
2051
|
$groupOrder{$tag} = $num;
|
2025
2052
|
}
|
2026
|
-
$sort2 or $sort2 =
|
2053
|
+
$sort2 or $sort2 = $$self{OPTIONS}{Sort2};
|
2027
2054
|
if ($sort2) {
|
2028
2055
|
if ($sort2 eq 'Tag' or $sort2 eq 'Alpha') {
|
2029
2056
|
return sort { $groupOrder{$a} <=> $groupOrder{$b} or $a cmp $b } @$foundTags;
|
@@ -2053,7 +2080,7 @@ sub GetFoundTags($;$$)
|
|
2053
2080
|
{
|
2054
2081
|
local $_;
|
2055
2082
|
my ($self, $sort, $sort2) = @_;
|
2056
|
-
my $foundTags =
|
2083
|
+
my $foundTags = $$self{FOUND_TAGS} || $self->SetFoundTags() or return undef;
|
2057
2084
|
return $self->GetTagList($foundTags, $sort, $sort2);
|
2058
2085
|
}
|
2059
2086
|
|
@@ -2084,13 +2111,13 @@ sub GetValue($$;$)
|
|
2084
2111
|
|
2085
2112
|
# figure out what conversions to do
|
2086
2113
|
if ($type) {
|
2087
|
-
return
|
2114
|
+
return $$self{RATIONAL}{$tag} if $type eq 'Rational';
|
2088
2115
|
} else {
|
2089
|
-
$type =
|
2116
|
+
$type = $$self{OPTIONS}{PrintConv} ? 'PrintConv' : 'ValueConv';
|
2090
2117
|
}
|
2091
2118
|
|
2092
2119
|
# start with the raw value
|
2093
|
-
my $value =
|
2120
|
+
my $value = $$self{VALUE}{$tag};
|
2094
2121
|
if (not defined $value) {
|
2095
2122
|
return wantarray ? () : undef unless ref $tag;
|
2096
2123
|
# get the value of a structure field
|
@@ -2103,7 +2130,7 @@ sub GetValue($$;$)
|
|
2103
2130
|
push @convTypes, 'PrintConv' unless $type eq 'ValueConv';
|
2104
2131
|
}
|
2105
2132
|
} else {
|
2106
|
-
$tagInfo =
|
2133
|
+
$tagInfo = $$self{TAG_INFO}{$tag};
|
2107
2134
|
if ($$tagInfo{Struct} and ref $value) {
|
2108
2135
|
# must load XMPStruct.pl just in case (should already be loaded if
|
2109
2136
|
# a structure was extracted, but we could also arrive here if a simple
|
@@ -2121,7 +2148,7 @@ sub GetValue($$;$)
|
|
2121
2148
|
}
|
2122
2149
|
if ($type ne 'Raw') {
|
2123
2150
|
# use values we calculated already if we stored them
|
2124
|
-
$both =
|
2151
|
+
$both = $$self{BOTH}{$tag};
|
2125
2152
|
if ($both) {
|
2126
2153
|
if ($type eq 'PrintConv') {
|
2127
2154
|
$value = $$both[1];
|
@@ -2150,7 +2177,7 @@ sub GetValue($$;$)
|
|
2150
2177
|
$conv = '\$val'; # return scalar reference for binary values
|
2151
2178
|
} else {
|
2152
2179
|
# use PRINT_CONV from tag table if PrintConv doesn't exist
|
2153
|
-
next unless defined($conv =
|
2180
|
+
next unless defined($conv = $$tagInfo{Table}{PRINT_CONV});
|
2154
2181
|
next if exists $$tagInfo{$convType};
|
2155
2182
|
}
|
2156
2183
|
}
|
@@ -2206,9 +2233,9 @@ sub GetValue($$;$)
|
|
2206
2233
|
my $oldEscape = $$self{ESCAPE_PROC};
|
2207
2234
|
delete $$self{ESCAPE_PROC};
|
2208
2235
|
foreach (keys %$val) {
|
2209
|
-
$raw[$_] =
|
2236
|
+
$raw[$_] = $$self{VALUE}{$$val{$_}};
|
2210
2237
|
($val[$_], $prt[$_]) = $self->GetValue($$val{$_}, 'Both');
|
2211
|
-
next if defined $val[$_] or not
|
2238
|
+
next if defined $val[$_] or not $$tagInfo{Require}{$_};
|
2212
2239
|
$$self{ESCAPE_PROC} = $oldEscape;
|
2213
2240
|
return wantarray ? () : undef;
|
2214
2241
|
}
|
@@ -2223,7 +2250,7 @@ sub GetValue($$;$)
|
|
2223
2250
|
# override with our localized language PrintConv if available
|
2224
2251
|
if ($$self{CUR_LANG} and $convType eq 'PrintConv' and
|
2225
2252
|
# (no need to check for lang-alt tag names -- they won't have a PrintConv)
|
2226
|
-
ref($lc =
|
2253
|
+
ref($lc = $$self{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
|
2227
2254
|
($lc = $$lc{PrintConv}) and ($lc = $$lc{$value}))
|
2228
2255
|
{
|
2229
2256
|
$value = $self->Decode($lc, 'UTF8');
|
@@ -2233,7 +2260,7 @@ sub GetValue($$;$)
|
|
2233
2260
|
$value = DecodeBits($val, $$conv{BITMASK});
|
2234
2261
|
# override with localized language strings
|
2235
2262
|
if (defined $value and $$self{CUR_LANG} and $convType eq 'PrintConv' and
|
2236
|
-
ref($lc =
|
2263
|
+
ref($lc = $$self{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
|
2237
2264
|
($lc = $$lc{PrintConv}))
|
2238
2265
|
{
|
2239
2266
|
my @vals = split ', ', $value;
|
@@ -2296,7 +2323,7 @@ sub GetValue($$;$)
|
|
2296
2323
|
if ($type eq 'Both') {
|
2297
2324
|
# save both (unescaped) values because we often need them again
|
2298
2325
|
# (Composite tags need "Both" and often Require one tag for various Composite tags)
|
2299
|
-
|
2326
|
+
$$self{BOTH}{$tag} = [ $valueConv, $value ] unless $both;
|
2300
2327
|
# escape values if necessary
|
2301
2328
|
if ($$self{ESCAPE_PROC}) {
|
2302
2329
|
DoEscape($value, $$self{ESCAPE_PROC});
|
@@ -2319,9 +2346,9 @@ sub GetValue($$;$)
|
|
2319
2346
|
# return array if requested
|
2320
2347
|
return @$value if wantarray;
|
2321
2348
|
# return list reference for Raw, ValueConv or if List or not a list of scalars
|
2322
|
-
return $value if $type ne 'PrintConv' or
|
2349
|
+
return $value if $type ne 'PrintConv' or $$self{OPTIONS}{List} or ref $$value[0];
|
2323
2350
|
# otherwise join in comma-separated string
|
2324
|
-
$value = join
|
2351
|
+
$value = join $$self{OPTIONS}{ListSep}, @$value;
|
2325
2352
|
}
|
2326
2353
|
return $value;
|
2327
2354
|
}
|
@@ -2334,7 +2361,7 @@ sub GetValue($$;$)
|
|
2334
2361
|
sub GetTagID($$)
|
2335
2362
|
{
|
2336
2363
|
my ($self, $tag) = @_;
|
2337
|
-
my $tagInfo =
|
2364
|
+
my $tagInfo = $$self{TAG_INFO}{$tag};
|
2338
2365
|
return '' unless $tagInfo and defined $$tagInfo{TagID};
|
2339
2366
|
return ($$tagInfo{TagID}, $$tagInfo{LangCode}) if wantarray;
|
2340
2367
|
return $$tagInfo{TagID};
|
@@ -2347,8 +2374,8 @@ sub GetTagID($$)
|
|
2347
2374
|
sub GetTableName($$)
|
2348
2375
|
{
|
2349
2376
|
my ($self, $tag) = @_;
|
2350
|
-
my $tagInfo =
|
2351
|
-
return
|
2377
|
+
my $tagInfo = $$self{TAG_INFO}{$tag} or return '';
|
2378
|
+
return $$tagInfo{Table}{SHORT_NAME};
|
2352
2379
|
}
|
2353
2380
|
|
2354
2381
|
#------------------------------------------------------------------------------
|
@@ -2358,7 +2385,7 @@ sub GetTableName($$)
|
|
2358
2385
|
sub GetTagIndex($$)
|
2359
2386
|
{
|
2360
2387
|
my ($self, $tag) = @_;
|
2361
|
-
my $tagInfo =
|
2388
|
+
my $tagInfo = $$self{TAG_INFO}{$tag} or return undef;
|
2362
2389
|
return $$tagInfo{Index};
|
2363
2390
|
}
|
2364
2391
|
|
@@ -2372,12 +2399,12 @@ sub GetDescription($$)
|
|
2372
2399
|
local $_;
|
2373
2400
|
my ($self, $tag) = @_;
|
2374
2401
|
my ($desc, $name);
|
2375
|
-
my $tagInfo =
|
2402
|
+
my $tagInfo = $$self{TAG_INFO}{$tag};
|
2376
2403
|
# ($tagInfo won't be defined for missing tags extracted with -f)
|
2377
2404
|
if ($tagInfo) {
|
2378
2405
|
# use alternate language description if available
|
2379
2406
|
while ($$self{CUR_LANG}) {
|
2380
|
-
$desc =
|
2407
|
+
$desc = $$self{CUR_LANG}{$$tagInfo{Name}};
|
2381
2408
|
if ($desc) {
|
2382
2409
|
# must look up Description if this tag also has a PrintConv
|
2383
2410
|
$desc = $$desc{Description} or last if ref $desc;
|
@@ -2385,7 +2412,7 @@ sub GetDescription($$)
|
|
2385
2412
|
# look up default language of lang-alt tag
|
2386
2413
|
last unless $$tagInfo{LangCode} and
|
2387
2414
|
($name = $$tagInfo{Name}) =~ s/-$$tagInfo{LangCode}$// and
|
2388
|
-
$desc =
|
2415
|
+
$desc = $$self{CUR_LANG}{$name};
|
2389
2416
|
$desc = $$desc{Description} or last if ref $desc;
|
2390
2417
|
$desc .= " ($$tagInfo{LangCode})";
|
2391
2418
|
}
|
@@ -2409,7 +2436,8 @@ sub GetDescription($$)
|
|
2409
2436
|
# Get group name for specified tag
|
2410
2437
|
# Inputs: 0) ExifTool object reference
|
2411
2438
|
# 1) tag key (or reference to tagInfo hash, not part of the public API)
|
2412
|
-
# 2) [optional] group family (-1 to get extended group list
|
2439
|
+
# 2) [optional] group family (-1 to get extended group list, or multiple
|
2440
|
+
# families separated by colons to return multiple groups as a string)
|
2413
2441
|
# Returns: Scalar context: Group name (for family 0 if not otherwise specified)
|
2414
2442
|
# Array context: Group name if family specified, otherwise list of
|
2415
2443
|
# group names for each family. Returns '' for undefined tag.
|
@@ -2418,32 +2446,30 @@ sub GetGroup($$;$)
|
|
2418
2446
|
{
|
2419
2447
|
local $_;
|
2420
2448
|
my ($self, $tag, $family) = @_;
|
2421
|
-
my ($tagInfo, @groups, @families, $simplify, $byTagInfo);
|
2449
|
+
my ($tagInfo, @groups, @families, $simplify, $byTagInfo, $ex);
|
2422
2450
|
if (ref $tag eq 'HASH') {
|
2423
2451
|
$tagInfo = $tag;
|
2424
2452
|
$tag = $$tagInfo{Name};
|
2425
2453
|
# set flag so we don't get extra information for an extracted tag
|
2426
2454
|
$byTagInfo = 1;
|
2427
2455
|
} else {
|
2428
|
-
$tagInfo =
|
2456
|
+
$tagInfo = $$self{TAG_INFO}{$tag} || { };
|
2457
|
+
$ex = $$self{TAG_EXTRA}{$tag};
|
2429
2458
|
}
|
2430
2459
|
my $groups = $$tagInfo{Groups};
|
2431
2460
|
# fill in default groups unless already done
|
2432
2461
|
# (after this, Groups 0-2 in tagInfo are guaranteed to be defined)
|
2433
2462
|
unless ($$tagInfo{GotGroups}) {
|
2434
|
-
my $tagTablePtr = $$tagInfo{Table};
|
2435
|
-
|
2436
|
-
|
2437
|
-
|
2438
|
-
|
2439
|
-
|
2440
|
-
$$groups{$_} or $$groups{$_} = $tagTablePtr->{GROUPS}{$_};
|
2441
|
-
}
|
2463
|
+
my $tagTablePtr = $$tagInfo{Table} || { GROUPS => { } };
|
2464
|
+
# construct our group list
|
2465
|
+
$groups or $groups = $$tagInfo{Groups} = { };
|
2466
|
+
# fill in default groups
|
2467
|
+
foreach (0..2) {
|
2468
|
+
$$groups{$_} = $$tagTablePtr{GROUPS}{$_} || '' unless $$groups{$_};
|
2442
2469
|
}
|
2443
2470
|
# set flag indicating group list was built
|
2444
2471
|
$$tagInfo{GotGroups} = 1;
|
2445
2472
|
}
|
2446
|
-
my $ex = $self->{TAG_EXTRA}{$tag};
|
2447
2473
|
if (defined $family and $family ne '-1') {
|
2448
2474
|
if ($family =~ /[^\d]/) {
|
2449
2475
|
@families = ($family =~ /\d+/g);
|
@@ -2511,7 +2537,7 @@ sub GetGroups($;$$)
|
|
2511
2537
|
# figure out our arguments
|
2512
2538
|
if (ref $info ne 'HASH') {
|
2513
2539
|
$family = $info;
|
2514
|
-
$info =
|
2540
|
+
$info = $$self{VALUE};
|
2515
2541
|
} else {
|
2516
2542
|
$family = shift;
|
2517
2543
|
}
|
@@ -2542,8 +2568,8 @@ sub SetNewGroups($;@)
|
|
2542
2568
|
$priority{file} = 10; # 'File' group is always written (Comment)
|
2543
2569
|
$priority{composite} = 10; # 'Composite' group is always written
|
2544
2570
|
# set write priority (higher # is higher priority)
|
2545
|
-
|
2546
|
-
|
2571
|
+
$$self{WRITE_PRIORITY} = \%priority;
|
2572
|
+
$$self{WRITE_GROUPS} = \@groups;
|
2547
2573
|
}
|
2548
2574
|
|
2549
2575
|
#------------------------------------------------------------------------------
|
@@ -2566,7 +2592,7 @@ sub BuildCompositeTags($)
|
|
2566
2592
|
my @tagList = sort keys %Image::ExifTool::Composite;
|
2567
2593
|
my %tagsUsed;
|
2568
2594
|
|
2569
|
-
my $rawValue =
|
2595
|
+
my $rawValue = $$self{VALUE};
|
2570
2596
|
for (;;) {
|
2571
2597
|
my %notBuilt;
|
2572
2598
|
$notBuilt{$_} = 1 foreach @tagList;
|
@@ -2634,11 +2660,11 @@ COMPOSITE_TAG:
|
|
2634
2660
|
}
|
2635
2661
|
if ($doc) {
|
2636
2662
|
if ($found) {
|
2637
|
-
|
2663
|
+
$$self{DOC_NUM} = $doc;
|
2638
2664
|
$self->FoundTag($tagInfo, \%tagKey);
|
2639
|
-
delete
|
2665
|
+
delete $$self{DOC_NUM};
|
2640
2666
|
}
|
2641
|
-
next if ++$doc <=
|
2667
|
+
next if ++$doc <= $$self{DOC_COUNT};
|
2642
2668
|
last;
|
2643
2669
|
} elsif ($found) {
|
2644
2670
|
delete $notBuilt{$tag}; # this tag is OK to build now
|
@@ -2657,7 +2683,7 @@ COMPOSITE_TAG:
|
|
2657
2683
|
# check to see if we just replaced one of the tag keys we Require'd
|
2658
2684
|
if (defined $key and $tagsUsed{$key}) {
|
2659
2685
|
foreach (@{$tagsUsed{$key}}) {
|
2660
|
-
$$_ =
|
2686
|
+
$$_ = $$self{MOVED_KEY}; # replace with new tag key
|
2661
2687
|
}
|
2662
2688
|
delete $tagsUsed{$key}; # can't be replaced again
|
2663
2689
|
}
|
@@ -2798,46 +2824,46 @@ sub Init($)
|
|
2798
2824
|
my $self = shift;
|
2799
2825
|
# delete all DataMember variables (lower-case names)
|
2800
2826
|
foreach (keys %$self) {
|
2801
|
-
/[a-z]/ and delete
|
2802
|
-
}
|
2803
|
-
delete
|
2804
|
-
delete
|
2805
|
-
delete
|
2806
|
-
delete
|
2807
|
-
delete
|
2808
|
-
delete
|
2809
|
-
delete
|
2810
|
-
delete
|
2811
|
-
|
2812
|
-
|
2813
|
-
|
2814
|
-
|
2815
|
-
|
2816
|
-
|
2817
|
-
|
2818
|
-
|
2819
|
-
|
2820
|
-
|
2821
|
-
|
2822
|
-
|
2823
|
-
|
2824
|
-
|
2825
|
-
|
2826
|
-
|
2827
|
-
|
2828
|
-
|
2829
|
-
|
2830
|
-
|
2831
|
-
|
2832
|
-
|
2833
|
-
|
2834
|
-
|
2827
|
+
/[a-z]/ and delete $$self{$_};
|
2828
|
+
}
|
2829
|
+
delete $$self{FOUND_TAGS}; # list of found tags
|
2830
|
+
delete $$self{EXIF_DATA}; # the EXIF data block
|
2831
|
+
delete $$self{EXIF_POS}; # EXIF position in file
|
2832
|
+
delete $$self{FIRST_EXIF_POS}; # position of first EXIF in file
|
2833
|
+
delete $$self{HTML_DUMP}; # html dump information
|
2834
|
+
delete $$self{SET_GROUP0}; # group0 name override
|
2835
|
+
delete $$self{SET_GROUP1}; # group1 name override
|
2836
|
+
delete $$self{DOC_NUM}; # current embedded document number
|
2837
|
+
$$self{DOC_COUNT} = 0; # count of embedded documents processed
|
2838
|
+
$$self{BASE} = 0; # base for offsets from start of file
|
2839
|
+
$$self{FILE_ORDER} = { }; # * hash of tag order in file ('*' = based on tag key)
|
2840
|
+
$$self{VALUE} = { }; # * hash of raw tag values
|
2841
|
+
$$self{BOTH} = { }; # * hash for Value/PrintConv values of Require'd tags
|
2842
|
+
$$self{RATIONAL} = { }; # * hash of original rational components
|
2843
|
+
$$self{TAG_INFO} = { }; # * hash of tag information
|
2844
|
+
$$self{TAG_EXTRA} = { }; # * hash of extra tag information (dynamic group names)
|
2845
|
+
$$self{PRIORITY} = { }; # * priority of current tags
|
2846
|
+
$$self{LIST_TAGS} = { }; # hash of tagInfo refs for active List-type tags
|
2847
|
+
$$self{PROCESSED} = { }; # hash of processed directory start positions
|
2848
|
+
$$self{DIR_COUNT} = { }; # count various types of directories
|
2849
|
+
$$self{DUPL_TAG} = { }; # last-used index for duplicate-tag keys
|
2850
|
+
$$self{WARNED_ONCE}= { }; # WarnOnce() warnings already issued
|
2851
|
+
$$self{PATH} = [ ]; # current subdirectory path in file when reading
|
2852
|
+
$$self{NUM_FOUND} = 0; # total number of tags found (incl. duplicates)
|
2853
|
+
$$self{CHANGED} = 0; # number of tags changed (writer only)
|
2854
|
+
$$self{INDENT} = ' '; # initial indent for verbose messages
|
2855
|
+
$$self{PRIORITY_DIR} = ''; # the priority directory name
|
2856
|
+
$$self{LOW_PRIORITY_DIR} = { PreviewIFD => 1 }; # names of priority 0 directories
|
2857
|
+
$$self{TIFF_TYPE} = ''; # type of TIFF data (APP1, TIFF, NEF, etc...)
|
2858
|
+
$$self{Make} = ''; # camera make
|
2859
|
+
$$self{Model} = ''; # camera model
|
2860
|
+
$$self{CameraType} = ''; # Olympus camera type
|
2835
2861
|
if ($self->Options('HtmlDump')) {
|
2836
2862
|
require Image::ExifTool::HtmlDump;
|
2837
|
-
|
2863
|
+
$$self{HTML_DUMP} = new Image::ExifTool::HtmlDump;
|
2838
2864
|
}
|
2839
2865
|
# make sure our TextOut is a file reference
|
2840
|
-
|
2866
|
+
$$self{OPTIONS}{TextOut} = \*STDOUT unless ref $$self{OPTIONS}{TextOut};
|
2841
2867
|
}
|
2842
2868
|
|
2843
2869
|
#------------------------------------------------------------------------------
|
@@ -2885,27 +2911,27 @@ sub Open(*$;$)
|
|
2885
2911
|
sub ParseArguments($;@)
|
2886
2912
|
{
|
2887
2913
|
my $self = shift;
|
2888
|
-
my $options =
|
2914
|
+
my $options = $$self{OPTIONS};
|
2889
2915
|
my @exclude;
|
2890
|
-
my @oldGroupOpts = grep /^Group/, keys %{
|
2916
|
+
my @oldGroupOpts = grep /^Group/, keys %{$$self{OPTIONS}};
|
2891
2917
|
my $wasExcludeOpt;
|
2892
2918
|
|
2893
|
-
|
2894
|
-
|
2895
|
-
|
2896
|
-
|
2919
|
+
$$self{REQUESTED_TAGS} = [ ];
|
2920
|
+
$$self{REQ_TAG_LOOKUP} = { };
|
2921
|
+
$$self{EXCL_TAG_LOOKUP} = { };
|
2922
|
+
$$self{IO_TAG_LIST} = undef;
|
2897
2923
|
|
2898
2924
|
# handle our input arguments
|
2899
2925
|
while (@_) {
|
2900
2926
|
my $arg = shift;
|
2901
2927
|
if (ref $arg) {
|
2902
2928
|
if (ref $arg eq 'ARRAY') {
|
2903
|
-
|
2929
|
+
$$self{IO_TAG_LIST} = $arg;
|
2904
2930
|
foreach (@$arg) {
|
2905
2931
|
if (/^-(.*)/) {
|
2906
2932
|
push @exclude, $1;
|
2907
2933
|
} else {
|
2908
|
-
push @{
|
2934
|
+
push @{$$self{REQUESTED_TAGS}}, $_;
|
2909
2935
|
}
|
2910
2936
|
}
|
2911
2937
|
} elsif (ref $arg eq 'HASH') {
|
@@ -2914,7 +2940,7 @@ sub ParseArguments($;@)
|
|
2914
2940
|
# a single new group option overrides all old group options
|
2915
2941
|
if (@oldGroupOpts and $opt =~ /^Group/) {
|
2916
2942
|
foreach (@oldGroupOpts) {
|
2917
|
-
delete
|
2943
|
+
delete $$options{$_};
|
2918
2944
|
}
|
2919
2945
|
undef @oldGroupOpts;
|
2920
2946
|
}
|
@@ -2922,7 +2948,7 @@ sub ParseArguments($;@)
|
|
2922
2948
|
$opt eq 'Exclude' and $wasExcludeOpt = 1;
|
2923
2949
|
}
|
2924
2950
|
} elsif (ref $arg eq 'SCALAR' or UNIVERSAL::isa($arg,'GLOB')) {
|
2925
|
-
next if defined
|
2951
|
+
next if defined $$self{RAF};
|
2926
2952
|
# convert image data from UTF-8 to character stream if necessary
|
2927
2953
|
# (patches RHEL 3 UTF8 LANG problem)
|
2928
2954
|
if (ref $arg eq 'SCALAR' and $] >= 5.006 and
|
@@ -2932,45 +2958,45 @@ sub ParseArguments($;@)
|
|
2932
2958
|
my $buff = $@ ? pack('C*',unpack('U0C*',$$arg)) : Encode::encode('utf8',$$arg);
|
2933
2959
|
$arg = \$buff;
|
2934
2960
|
}
|
2935
|
-
|
2961
|
+
$$self{RAF} = new File::RandomAccess($arg);
|
2936
2962
|
# set filename to empty string to indicate that
|
2937
2963
|
# we have a file but we didn't open it
|
2938
|
-
|
2964
|
+
$$self{FILENAME} = '';
|
2939
2965
|
} elsif (UNIVERSAL::isa($arg, 'File::RandomAccess')) {
|
2940
|
-
|
2941
|
-
|
2966
|
+
$$self{RAF} = $arg;
|
2967
|
+
$$self{FILENAME} = '';
|
2942
2968
|
} else {
|
2943
2969
|
warn "Don't understand ImageInfo argument $arg\n";
|
2944
2970
|
}
|
2945
|
-
} elsif (defined
|
2971
|
+
} elsif (defined $$self{FILENAME}) {
|
2946
2972
|
if ($arg =~ /^-(.*)/) {
|
2947
2973
|
push @exclude, $1;
|
2948
2974
|
} else {
|
2949
|
-
push @{
|
2975
|
+
push @{$$self{REQUESTED_TAGS}}, $arg;
|
2950
2976
|
}
|
2951
2977
|
} else {
|
2952
|
-
|
2978
|
+
$$self{FILENAME} = $arg;
|
2953
2979
|
}
|
2954
2980
|
}
|
2955
2981
|
# expand shortcuts in tag arguments if provided
|
2956
|
-
if (@{
|
2957
|
-
ExpandShortcuts(
|
2982
|
+
if (@{$$self{REQUESTED_TAGS}}) {
|
2983
|
+
ExpandShortcuts($$self{REQUESTED_TAGS});
|
2958
2984
|
# initialize lookup for requested tags
|
2959
|
-
foreach (@{
|
2960
|
-
/([-\w]+)#?$/ and
|
2985
|
+
foreach (@{$$self{REQUESTED_TAGS}}) {
|
2986
|
+
/([-\w]+)#?$/ and $$self{REQ_TAG_LOOKUP}{lc($1)} = 1;
|
2961
2987
|
}
|
2962
2988
|
}
|
2963
2989
|
if (@exclude or $wasExcludeOpt) {
|
2964
2990
|
# must add existing excluded tags
|
2965
|
-
push @exclude, @{
|
2966
|
-
|
2991
|
+
push @exclude, @{$$options{Exclude}} if $$options{Exclude};
|
2992
|
+
$$options{Exclude} = \@exclude;
|
2967
2993
|
# expand shortcuts in new exclude list
|
2968
|
-
ExpandShortcuts(
|
2994
|
+
ExpandShortcuts($$options{Exclude}, 1); # (also remove '#' suffix)
|
2969
2995
|
}
|
2970
2996
|
# generate lookup for excluded tags
|
2971
|
-
if (
|
2972
|
-
foreach (@{
|
2973
|
-
/([-\w]+)#?$/ and
|
2997
|
+
if ($$options{Exclude}) {
|
2998
|
+
foreach (@{$$options{Exclude}}) {
|
2999
|
+
/([-\w]+)#?$/ and $$self{EXCL_TAG_LOOKUP}{lc($1)} = 1;
|
2974
3000
|
}
|
2975
3001
|
}
|
2976
3002
|
}
|
@@ -3033,11 +3059,11 @@ sub GroupMatches($$$)
|
|
3033
3059
|
sub SetFoundTags($)
|
3034
3060
|
{
|
3035
3061
|
my $self = shift;
|
3036
|
-
my $options =
|
3037
|
-
my $reqTags =
|
3038
|
-
my $duplicates =
|
3039
|
-
my $exclude =
|
3040
|
-
my $fileOrder =
|
3062
|
+
my $options = $$self{OPTIONS};
|
3063
|
+
my $reqTags = $$self{REQUESTED_TAGS} || [ ];
|
3064
|
+
my $duplicates = $$options{Duplicates};
|
3065
|
+
my $exclude = $$options{Exclude};
|
3066
|
+
my $fileOrder = $$self{FILE_ORDER};
|
3041
3067
|
my @groupOptions = sort grep /^Group/, keys %$options;
|
3042
3068
|
my $doDups = $duplicates || $exclude || @groupOptions;
|
3043
3069
|
my ($tag, $rtnTags, @byValue, @wildTags);
|
@@ -3062,7 +3088,7 @@ sub SetFoundTags($)
|
|
3062
3088
|
$tag = $reqTag;
|
3063
3089
|
}
|
3064
3090
|
$byValue = 1 if $tag =~ s/#$// and $$options{PrintConv};
|
3065
|
-
if (defined
|
3091
|
+
if (defined $$tagHash{$reqTag} and not $doDups) {
|
3066
3092
|
$matches[0] = $tag;
|
3067
3093
|
} elsif ($tag =~ /^(\*|all)$/i) {
|
3068
3094
|
# tag name of '*' or 'all' matches all tags
|
@@ -3104,9 +3130,9 @@ sub SetFoundTags($)
|
|
3104
3130
|
# return only the highest priority tag unless duplicates wanted
|
3105
3131
|
unless ($doDups or $allTag or $allGrp) {
|
3106
3132
|
$tag = shift @matches;
|
3107
|
-
my $oldPriority =
|
3133
|
+
my $oldPriority = $$self{PRIORITY}{$tag} || 1;
|
3108
3134
|
foreach (@matches) {
|
3109
|
-
my $priority =
|
3135
|
+
my $priority = $$self{PRIORITY}{$_};
|
3110
3136
|
$priority = 1 unless defined $priority;
|
3111
3137
|
next unless $priority >= $oldPriority;
|
3112
3138
|
$tag = $_;
|
@@ -3118,7 +3144,7 @@ sub SetFoundTags($)
|
|
3118
3144
|
# put entry in return list even without value (value is undef)
|
3119
3145
|
$matches[0] = $byValue ? "$tag #(0)" : "$tag (0)";
|
3120
3146
|
# bogus file order entry to avoid warning if sorting in file order
|
3121
|
-
|
3147
|
+
$$self{FILE_ORDER}{$matches[0]} = 9999;
|
3122
3148
|
}
|
3123
3149
|
# save indices of tags extracted by value
|
3124
3150
|
push @byValue, scalar(@$rtnTags) .. (scalar(@$rtnTags)+scalar(@matches)-1) if $byValue;
|
@@ -3185,10 +3211,10 @@ sub SetFoundTags($)
|
|
3185
3211
|
$family = $1 || 0;
|
3186
3212
|
$wantGroup{$family} or $wantGroup{$family} = { };
|
3187
3213
|
my $groupList;
|
3188
|
-
if (ref
|
3189
|
-
$groupList =
|
3214
|
+
if (ref $$options{$groupOpt} eq 'ARRAY') {
|
3215
|
+
$groupList = $$options{$groupOpt};
|
3190
3216
|
} else {
|
3191
|
-
$groupList = [
|
3217
|
+
$groupList = [ $$options{$groupOpt} ];
|
3192
3218
|
}
|
3193
3219
|
foreach (@$groupList) {
|
3194
3220
|
# groups have priority in order they were specified
|
@@ -3250,7 +3276,7 @@ GR_TAG: foreach $tag (@$rtnTags) {
|
|
3250
3276
|
$rtnTags = \@tags;
|
3251
3277
|
last;
|
3252
3278
|
}
|
3253
|
-
|
3279
|
+
$$self{FOUND_TAGS} = $rtnTags; # save found tags
|
3254
3280
|
|
3255
3281
|
# return reference to found tag keys (and list of indices of tags to extract by value)
|
3256
3282
|
return wantarray ? ($rtnTags, \@byValue, \@wildTags) : $rtnTags;
|
@@ -3302,7 +3328,7 @@ sub Warn($$;$)
|
|
3302
3328
|
{
|
3303
3329
|
my ($self, $str, $ignorable) = @_;
|
3304
3330
|
if ($ignorable) {
|
3305
|
-
return 0 if
|
3331
|
+
return 0 if $$self{OPTIONS}{IgnoreMinorErrors};
|
3306
3332
|
$str = $ignorable eq '2' ? "[Minor] $str" : "[minor] $str";
|
3307
3333
|
}
|
3308
3334
|
$self->FoundTag('Warning', $str);
|
@@ -3316,7 +3342,7 @@ sub Warn($$;$)
|
|
3316
3342
|
sub WarnOnce($$;$)
|
3317
3343
|
{
|
3318
3344
|
my ($self, $str, $ignorable) = @_;
|
3319
|
-
return 0 if $ignorable and
|
3345
|
+
return 0 if $ignorable and $$self{OPTIONS}{IgnoreMinorErrors};
|
3320
3346
|
unless ($$self{WARNED_ONCE}{$str}) {
|
3321
3347
|
$self->Warn($str, $ignorable);
|
3322
3348
|
$$self{WARNED_ONCE}{$str} = 1;
|
@@ -3331,11 +3357,11 @@ sub WarnOnce($$;$)
|
|
3331
3357
|
sub Error($$;$)
|
3332
3358
|
{
|
3333
3359
|
my ($self, $str, $ignorable) = @_;
|
3334
|
-
if (
|
3335
|
-
|
3336
|
-
|
3337
|
-
|
3338
|
-
}
|
3360
|
+
if ($$self{DemoteErrors}) {
|
3361
|
+
$self->Warn($str) and ++$$self{DemoteErrors};
|
3362
|
+
return 1;
|
3363
|
+
} elsif ($ignorable) {
|
3364
|
+
$$self{OPTIONS}{IgnoreMinorErrors} and $self->Warn($str), return 0;
|
3339
3365
|
$str = "[minor] $str";
|
3340
3366
|
}
|
3341
3367
|
$self->FoundTag('Error', $str);
|
@@ -3461,9 +3487,9 @@ sub AddCompositeTags($;$)
|
|
3461
3487
|
|
3462
3488
|
# make sure default groups are defined in families 0 and 1
|
3463
3489
|
if ($defaultGroups) {
|
3464
|
-
|
3465
|
-
|
3466
|
-
|
3490
|
+
$$defaultGroups{0} or $$defaultGroups{0} = 'Composite';
|
3491
|
+
$$defaultGroups{1} or $$defaultGroups{1} = 'Composite';
|
3492
|
+
$$defaultGroups{2} or $$defaultGroups{2} = 'Other';
|
3467
3493
|
} else {
|
3468
3494
|
$defaultGroups = $$add{GROUPS} = { 0 => 'Composite', 1 => 'Composite', 2 => 'Other' };
|
3469
3495
|
}
|
@@ -4059,7 +4085,7 @@ sub ValidateImage($$$)
|
|
4059
4085
|
$self->Options('IgnoreMinorErrors'))
|
4060
4086
|
{
|
4061
4087
|
# issue warning only if the tag was specifically requested
|
4062
|
-
if (
|
4088
|
+
if ($$self{REQ_TAG_LOOKUP}{lc GetTagName($tag)}) {
|
4063
4089
|
$self->Warn("$tag is not a valid JPEG image",1);
|
4064
4090
|
return undef;
|
4065
4091
|
}
|
@@ -4118,7 +4144,7 @@ sub Printable($;$)
|
|
4118
4144
|
return '(undef)' unless defined $outStr;
|
4119
4145
|
$outStr =~ tr/\x01-\x1f\x7f-\xff/./;
|
4120
4146
|
$outStr =~ s/\x00//g;
|
4121
|
-
my $verbose =
|
4147
|
+
my $verbose = $$self{OPTIONS}{Verbose};
|
4122
4148
|
if ($verbose < 4) {
|
4123
4149
|
if ($maxLen) {
|
4124
4150
|
$maxLen = 20 if $maxLen < 20; # minimum length is 20
|
@@ -4145,8 +4171,8 @@ sub Printable($;$)
|
|
4145
4171
|
sub ConvertDateTime($$)
|
4146
4172
|
{
|
4147
4173
|
my ($self, $date) = @_;
|
4148
|
-
my $dateFormat =
|
4149
|
-
my $shift =
|
4174
|
+
my $dateFormat = $$self{OPTIONS}{DateFormat};
|
4175
|
+
my $shift = $$self{OPTIONS}{GlobalTimeShift};
|
4150
4176
|
if ($shift) {
|
4151
4177
|
my $dir = ($shift =~ s/^([-+])// and $1 eq '-') ? -1 : 1;
|
4152
4178
|
require 'Image/ExifTool/Shift.pl';
|
@@ -4165,7 +4191,7 @@ sub ConvertDateTime($$)
|
|
4165
4191
|
if (@a and $a[0] >= 1000 and $a[0] < 3000 and eval 'require POSIX') {
|
4166
4192
|
$date = POSIX::strftime($dateFormat, $a[5]||0, $a[4]||0, $a[3]||0,
|
4167
4193
|
$a[2]||1, ($a[1]||1)-1, $a[0]-1900);
|
4168
|
-
} elsif (
|
4194
|
+
} elsif ($$self{OPTIONS}{StrictDate}) {
|
4169
4195
|
undef $date;
|
4170
4196
|
}
|
4171
4197
|
}
|
@@ -4327,6 +4353,11 @@ sub ConvertDuration($)
|
|
4327
4353
|
$time -= $h * 3600;
|
4328
4354
|
my $m = int($time / 60);
|
4329
4355
|
$time -= $m * 60;
|
4356
|
+
if ($h > 24) {
|
4357
|
+
my $d = int($h / 24);
|
4358
|
+
$h -= $d * 24;
|
4359
|
+
$sign = "$sign$d days ";
|
4360
|
+
}
|
4330
4361
|
return sprintf("$sign%d:%.2d:%.2d", $h, $m, int($time));
|
4331
4362
|
}
|
4332
4363
|
|
@@ -4358,7 +4389,7 @@ sub HDump($$$$;$$)
|
|
4358
4389
|
if ($$self{HTML_DUMP}) {
|
4359
4390
|
my $pos = shift;
|
4360
4391
|
$pos += $$self{BASE} if $$self{BASE};
|
4361
|
-
|
4392
|
+
$$self{HTML_DUMP}->Add($pos, @_);
|
4362
4393
|
}
|
4363
4394
|
}
|
4364
4395
|
|
@@ -4555,11 +4586,11 @@ sub ProcessJPEG($$)
|
|
4555
4586
|
local $_;
|
4556
4587
|
my ($self, $dirInfo) = @_;
|
4557
4588
|
my ($ch, $s, $length);
|
4558
|
-
my $verbose =
|
4559
|
-
my $out =
|
4560
|
-
my $fast =
|
4589
|
+
my $verbose = $$self{OPTIONS}{Verbose};
|
4590
|
+
my $out = $$self{OPTIONS}{TextOut};
|
4591
|
+
my $fast = $$self{OPTIONS}{FastScan};
|
4561
4592
|
my $raf = $$dirInfo{RAF};
|
4562
|
-
my $htmlDump =
|
4593
|
+
my $htmlDump = $$self{HTML_DUMP};
|
4563
4594
|
my %dumpParms = ( Out => $out );
|
4564
4595
|
my ($success, $wantTrailer, $trailInfo);
|
4565
4596
|
my (@iccChunk, $iccChunkCount, $iccChunksTotal, @flirChunk, $flirCount, $flirTotal);
|
@@ -4697,7 +4728,7 @@ sub ProcessJPEG($$)
|
|
4697
4728
|
# (and Minolta and Sony previews can have a random first byte...)
|
4698
4729
|
my $scanLen = $$self{Make} =~ /Sony/i ? 65536 : 1024;
|
4699
4730
|
if ($raf->Read($buff, $scanLen) and ($buff =~ /\xff\xd8\xff./g or
|
4700
|
-
(
|
4731
|
+
($$self{Make} =~ /(Minolta|Sony)/i and $buff =~ /.\xd8\xff\xdb/g)))
|
4701
4732
|
{
|
4702
4733
|
# adjust PreviewImageStart to this location
|
4703
4734
|
my $actual = $pos + pos($buff) - 4;
|
@@ -4705,7 +4736,7 @@ sub ProcessJPEG($$)
|
|
4705
4736
|
print $out "(Fixed PreviewImage location: $start -> $actual)\n";
|
4706
4737
|
}
|
4707
4738
|
# update preview image offsets
|
4708
|
-
|
4739
|
+
$$self{VALUE}{PreviewImageStart} = $actual if $$self{VALUE}{PreviewImageStart};
|
4709
4740
|
$$self{PreviewImageStart} = $actual;
|
4710
4741
|
# load preview now if we tried and failed earlier
|
4711
4742
|
if ($$self{PreviewError} and $$self{PreviewImageLength}) {
|
@@ -4799,7 +4830,7 @@ sub ProcessJPEG($$)
|
|
4799
4830
|
# because we aren't checking the RequestAll API option here.
|
4800
4831
|
# The reason is that there is too much overhead involved in
|
4801
4832
|
# the calculation of this tag to make this worth the CPU time.)
|
4802
|
-
|
4833
|
+
$$self{REQ_TAG_LOOKUP}{jpegdigest})
|
4803
4834
|
{
|
4804
4835
|
my $num = unpack('C',$$segDataPt) & 0x0f; # get table index
|
4805
4836
|
$dqt[$num] = $$segDataPt if $num < 4; # save for MD5 calculation
|
@@ -4836,12 +4867,12 @@ sub ProcessJPEG($$)
|
|
4836
4867
|
next if $fast and $fast > 1; # skip processing for very fast
|
4837
4868
|
$dumpType = 'CIFF';
|
4838
4869
|
my %dirInfo = ( RAF => new File::RandomAccess($segDataPt) );
|
4839
|
-
|
4840
|
-
push @{
|
4870
|
+
$$self{SET_GROUP1} = 'CIFF';
|
4871
|
+
push @{$$self{PATH}}, 'CIFF';
|
4841
4872
|
require Image::ExifTool::CanonRaw;
|
4842
4873
|
Image::ExifTool::CanonRaw::ProcessCRW($self, \%dirInfo);
|
4843
|
-
pop @{
|
4844
|
-
delete
|
4874
|
+
pop @{$$self{PATH}};
|
4875
|
+
delete $$self{SET_GROUP1};
|
4845
4876
|
} elsif ($$segDataPt =~ /^(AVI1|Ocad)/) {
|
4846
4877
|
$dumpType = $1;
|
4847
4878
|
SetByteOrder('MM');
|
@@ -4892,10 +4923,10 @@ sub ProcessJPEG($$)
|
|
4892
4923
|
$plen = $$self{PreviewImageLength};
|
4893
4924
|
}
|
4894
4925
|
if ($start and $plen and IsInt($start) and IsInt($plen) and
|
4895
|
-
$start + $plen >
|
4896
|
-
(
|
4926
|
+
$start + $plen > $$self{EXIF_POS} + length($$self{EXIF_DATA}) and
|
4927
|
+
($$self{REQ_TAG_LOOKUP}{previewimage} or
|
4897
4928
|
# (extracted normally, so check Binary option)
|
4898
|
-
(
|
4929
|
+
($$self{OPTIONS}{Binary} and not $$self{EXCL_TAG_LOOKUP}{previewimage})))
|
4899
4930
|
{
|
4900
4931
|
$$self{PreviewImageStart} = $start;
|
4901
4932
|
$$self{PreviewImageLength} = $plen;
|
@@ -5248,8 +5279,29 @@ sub ProcessJPEG($$)
|
|
5248
5279
|
);
|
5249
5280
|
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
5250
5281
|
}
|
5251
|
-
} elsif ($marker == 0xe7) { # APP7 (Qualcomm)
|
5252
|
-
if ($$segDataPt =~
|
5282
|
+
} elsif ($marker == 0xe7) { # APP7 (Pentax, Qualcomm)
|
5283
|
+
if ($$segDataPt =~ /^PENTAX \0(II|MM)/) {
|
5284
|
+
# found in K-3 images (is this multi-segment??)
|
5285
|
+
SetByteOrder($1);
|
5286
|
+
undef $dumpType; # (dump this ourself)
|
5287
|
+
my $hdrLen = 10;
|
5288
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::Pentax::Main');
|
5289
|
+
my %dirInfo = (
|
5290
|
+
Parent => $markerName,
|
5291
|
+
DataPt => $segDataPt,
|
5292
|
+
DataLen => $length,
|
5293
|
+
DataPos => 0, # (remember: relative to Base!)
|
5294
|
+
DirStart => $hdrLen,
|
5295
|
+
Base => $segPos,
|
5296
|
+
DirName => 'Pentax APP7',
|
5297
|
+
);
|
5298
|
+
if ($htmlDump) {
|
5299
|
+
$self->HDump($segPos-4, 4, 'APP7 header', "Data size: $length bytes");
|
5300
|
+
$self->HDump($segPos, $hdrLen, 'Pentax header', 'APP7 data type: Pentax');
|
5301
|
+
$dumpEnd = $segPos + $length;
|
5302
|
+
}
|
5303
|
+
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
5304
|
+
} elsif ($$segDataPt =~ /^\x1aQualcomm Camera Attributes/) {
|
5253
5305
|
# found in HP iPAQ_VoiceMessenger
|
5254
5306
|
$dumpType = 'Qualcomm';
|
5255
5307
|
my $tagTablePtr = GetTagTable('Image::ExifTool::Qualcomm::Main');
|
@@ -5386,7 +5438,7 @@ sub ProcessJPEG($$)
|
|
5386
5438
|
undef $dumpType; # only dump unknown APP segments
|
5387
5439
|
}
|
5388
5440
|
if (defined $dumpType) {
|
5389
|
-
if (not $dumpType and
|
5441
|
+
if (not $dumpType and $$self{OPTIONS}{Unknown}) {
|
5390
5442
|
$self->Warn("Unknown $markerName segment", 1);
|
5391
5443
|
}
|
5392
5444
|
if ($htmlDump) {
|
@@ -5454,7 +5506,7 @@ sub DoProcessTIFF($$;$)
|
|
5454
5506
|
my ($err, $canonSig, $otherSig);
|
5455
5507
|
|
5456
5508
|
# attempt to read TIFF header
|
5457
|
-
|
5509
|
+
$$self{EXIF_DATA} = '';
|
5458
5510
|
if ($raf) {
|
5459
5511
|
if ($outfile) {
|
5460
5512
|
$raf->Seek(0, 0) or return 0;
|
@@ -5467,17 +5519,17 @@ sub DoProcessTIFF($$;$)
|
|
5467
5519
|
}
|
5468
5520
|
# extract full EXIF block (for block copy) from EXIF file
|
5469
5521
|
my $amount = $fileType eq 'EXIF' ? 65536 * 8 : 8;
|
5470
|
-
my $n = $raf->Read(
|
5522
|
+
my $n = $raf->Read($$self{EXIF_DATA}, $amount);
|
5471
5523
|
if ($n < 8) {
|
5472
5524
|
return 0 if $n or not $outfile or $fileType ne 'EXIF';
|
5473
5525
|
# create EXIF file from scratch
|
5474
|
-
delete
|
5526
|
+
delete $$self{EXIF_DATA};
|
5475
5527
|
undef $raf;
|
5476
5528
|
}
|
5477
5529
|
if ($n > 8) {
|
5478
5530
|
$raf->Seek(8, 0);
|
5479
5531
|
if ($n == $amount) {
|
5480
|
-
|
5532
|
+
$$self{EXIF_DATA} = substr($$self{EXIF_DATA}, 0, 8);
|
5481
5533
|
$self->Warn('EXIF too large to extract as a block'); #(shouldn't happen)
|
5482
5534
|
}
|
5483
5535
|
}
|
@@ -5485,24 +5537,24 @@ sub DoProcessTIFF($$;$)
|
|
5485
5537
|
# save a copy of the EXIF data
|
5486
5538
|
my $dirStart = $$dirInfo{DirStart} || 0;
|
5487
5539
|
my $dirLen = $$dirInfo{DirLen} || (length($$dataPt) - $dirStart);
|
5488
|
-
|
5489
|
-
$self->VerboseDir('TIFF') if
|
5540
|
+
$$self{EXIF_DATA} = substr($$dataPt, $dirStart, $dirLen);
|
5541
|
+
$self->VerboseDir('TIFF') if $$self{OPTIONS}{Verbose} and length($$self{INDENT}) > 2;
|
5490
5542
|
} elsif ($outfile) {
|
5491
|
-
delete
|
5543
|
+
delete $$self{EXIF_DATA}; # create from scratch
|
5492
5544
|
} else {
|
5493
|
-
|
5545
|
+
$$self{EXIF_DATA} = '';
|
5494
5546
|
}
|
5495
|
-
unless (defined
|
5547
|
+
unless (defined $$self{EXIF_DATA}) {
|
5496
5548
|
# create TIFF information from scratch
|
5497
5549
|
if ($self->SetPreferredByteOrder() eq 'MM') {
|
5498
|
-
|
5550
|
+
$$self{EXIF_DATA} = "MM\0\x2a\0\0\0\x08";
|
5499
5551
|
} else {
|
5500
|
-
|
5552
|
+
$$self{EXIF_DATA} = "II\x2a\0\x08\0\0\0";
|
5501
5553
|
}
|
5502
5554
|
}
|
5503
5555
|
$$self{FIRST_EXIF_POS} = $base + $$self{BASE} unless defined $$self{FIRST_EXIF_POS};
|
5504
5556
|
$$self{EXIF_POS} = $base + $$self{BASE};
|
5505
|
-
$dataPt =
|
5557
|
+
$dataPt = \$$self{EXIF_DATA};
|
5506
5558
|
|
5507
5559
|
# set byte ordering
|
5508
5560
|
my $byteOrder = substr($$dataPt,0,2);
|
@@ -5527,7 +5579,7 @@ sub DoProcessTIFF($$;$)
|
|
5527
5579
|
$$dataPt .= $canonSig;
|
5528
5580
|
if ($canonSig =~ /^(CR\x02\0|\xba\xb0\xac\xbb)/) {
|
5529
5581
|
$fileType = $canonSig =~ /^CR/ ? 'CR2' : 'Canon 1D RAW';
|
5530
|
-
$self->HDump($base+8, 8, "[$fileType header]") if
|
5582
|
+
$self->HDump($base+8, 8, "[$fileType header]") if $$self{HTML_DUMP};
|
5531
5583
|
} else {
|
5532
5584
|
undef $canonSig;
|
5533
5585
|
}
|
@@ -5567,7 +5619,7 @@ sub DoProcessTIFF($$;$)
|
|
5567
5619
|
}
|
5568
5620
|
}
|
5569
5621
|
# we have a valid TIFF (or whatever) file
|
5570
|
-
if ($fileType and not
|
5622
|
+
if ($fileType and not $$self{VALUE}{FileType}) {
|
5571
5623
|
my $lookup = $fileTypeLookup{$fileType};
|
5572
5624
|
$lookup = $fileTypeLookup{$lookup} unless ref $lookup or not $lookup;
|
5573
5625
|
# use file extension to pre-determine type if extension is TIFF-based or type is RAW
|
@@ -5582,13 +5634,13 @@ sub DoProcessTIFF($$;$)
|
|
5582
5634
|
} else {
|
5583
5635
|
$ifdName = $$tagTablePtr{GROUPS}{1};
|
5584
5636
|
}
|
5585
|
-
if (
|
5637
|
+
if ($$self{HTML_DUMP}) {
|
5586
5638
|
my $tip = sprintf("Byte order: %s endian\nIdentifier: 0x%.4x\n$ifdName offset: 0x%.4x",
|
5587
5639
|
($byteOrder eq 'II') ? 'Little' : 'Big', $identifier, $offset);
|
5588
5640
|
$self->HDump($base, 8, 'TIFF header', $tip, 0);
|
5589
5641
|
}
|
5590
5642
|
# remember where we found the TIFF data (APP1, APP3, TIFF, NEF, etc...)
|
5591
|
-
|
5643
|
+
$$self{TIFF_TYPE} = $fileType;
|
5592
5644
|
|
5593
5645
|
# get reference to the main EXIF table
|
5594
5646
|
$tagTablePtr or $tagTablePtr = GetTagTable('Image::ExifTool::Exif::Main');
|
@@ -5613,7 +5665,7 @@ sub DoProcessTIFF($$;$)
|
|
5613
5665
|
# process the directory
|
5614
5666
|
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
5615
5667
|
# process GeoTiff information if available
|
5616
|
-
if (
|
5668
|
+
if ($$self{VALUE}{GeoTiffDirectory}) {
|
5617
5669
|
require Image::ExifTool::GeoTiff;
|
5618
5670
|
Image::ExifTool::GeoTiff::ProcessGeoTiff($self);
|
5619
5671
|
}
|
@@ -5634,7 +5686,7 @@ sub DoProcessTIFF($$;$)
|
|
5634
5686
|
}
|
5635
5687
|
}
|
5636
5688
|
# update FileType if necessary now that we know more about the file
|
5637
|
-
if ($$self{DNGVersion} and
|
5689
|
+
if ($$self{DNGVersion} and $$self{VALUE}{FileType} ne 'DNG') {
|
5638
5690
|
# override whatever FileType we set since we now know it is DNG
|
5639
5691
|
$self->OverrideFileType('DNG');
|
5640
5692
|
}
|
@@ -5644,10 +5696,10 @@ sub DoProcessTIFF($$;$)
|
|
5644
5696
|
# rewrite the image
|
5645
5697
|
#
|
5646
5698
|
if ($$dirInfo{NoTiffEnd}) {
|
5647
|
-
delete
|
5699
|
+
delete $$self{TIFF_END};
|
5648
5700
|
} else {
|
5649
5701
|
# initialize TIFF_END so it will be updated by WriteExif()
|
5650
|
-
|
5702
|
+
$$self{TIFF_END} = 0;
|
5651
5703
|
}
|
5652
5704
|
if ($canonSig) {
|
5653
5705
|
# write Canon CR2 specially because it has a header we want to preserve,
|
@@ -5697,8 +5749,8 @@ sub DoProcessTIFF($$;$)
|
|
5697
5749
|
}
|
5698
5750
|
}
|
5699
5751
|
# make local copy of TIFF_END now (it may be reset when processing trailers)
|
5700
|
-
my $tiffEnd =
|
5701
|
-
delete
|
5752
|
+
my $tiffEnd = $$self{TIFF_END};
|
5753
|
+
delete $$self{TIFF_END};
|
5702
5754
|
|
5703
5755
|
# rewrite trailers if they exist
|
5704
5756
|
if ($raf and $tiffEnd and not $err) {
|
@@ -5732,9 +5784,9 @@ sub DoProcessTIFF($$;$)
|
|
5732
5784
|
}
|
5733
5785
|
if ($extra > 0) {
|
5734
5786
|
my $known = $$self{KnownTrailer};
|
5735
|
-
if (
|
5787
|
+
if ($$self{DEL_GROUP}{Trailer} and not $known) {
|
5736
5788
|
$self->VPrint(0, " Deleting unknown trailer ($extra bytes)\n");
|
5737
|
-
|
5789
|
+
++$$self{CHANGED};
|
5738
5790
|
} elsif ($known) {
|
5739
5791
|
$self->VPrint(0, " Copying $$known{Name} ($extra bytes)\n");
|
5740
5792
|
$raf->Seek($tiffEnd, 0) or $err = 1;
|
@@ -5913,26 +5965,26 @@ sub ProcessDirectory($$$;$)
|
|
5913
5965
|
($$dirInfo{DirLen} or not defined $$dirInfo{DirLen}))
|
5914
5966
|
{
|
5915
5967
|
my $addr = $$dirInfo{DirStart} + $$dirInfo{DataPos} + ($$dirInfo{Base}||0);
|
5916
|
-
if (
|
5917
|
-
$self->Warn("$dirName pointer references previous
|
5968
|
+
if ($$self{PROCESSED}{$addr}) {
|
5969
|
+
$self->Warn("$dirName pointer references previous $$self{PROCESSED}{$addr} directory");
|
5918
5970
|
return 0;
|
5919
5971
|
}
|
5920
|
-
|
5972
|
+
$$self{PROCESSED}{$addr} = $dirName;
|
5921
5973
|
}
|
5922
5974
|
my $oldOrder = GetByteOrder();
|
5923
|
-
my $oldIndent =
|
5924
|
-
my $oldDir =
|
5925
|
-
|
5926
|
-
|
5927
|
-
|
5928
|
-
push @{
|
5975
|
+
my $oldIndent = $$self{INDENT};
|
5976
|
+
my $oldDir = $$self{DIR_NAME};
|
5977
|
+
$$self{LIST_TAGS} = { }; # don't build lists across different directories
|
5978
|
+
$$self{INDENT} .= '| ';
|
5979
|
+
$$self{DIR_NAME} = $dirName;
|
5980
|
+
push @{$$self{PATH}}, $dirName;
|
5929
5981
|
|
5930
5982
|
# process the directory
|
5931
5983
|
my $rtnVal = &$proc($self, $dirInfo, $tagTablePtr);
|
5932
5984
|
|
5933
|
-
pop @{
|
5934
|
-
|
5935
|
-
|
5985
|
+
pop @{$$self{PATH}};
|
5986
|
+
$$self{INDENT} = $oldIndent;
|
5987
|
+
$$self{DIR_NAME} = $oldDir;
|
5936
5988
|
SetByteOrder($oldOrder);
|
5937
5989
|
return $rtnVal;
|
5938
5990
|
}
|
@@ -6074,8 +6126,8 @@ sub AddTagToTable($$;$$)
|
|
6074
6126
|
if ($$tagInfo{Groups}) {
|
6075
6127
|
# fill in default groups from table GROUPS
|
6076
6128
|
foreach (keys %{$$tagTablePtr{GROUPS}}) {
|
6077
|
-
next if
|
6078
|
-
|
6129
|
+
next if $$tagInfo{Groups}{$_};
|
6130
|
+
$$tagInfo{Groups}{$_} = $$tagTablePtr{GROUPS}{$_};
|
6079
6131
|
}
|
6080
6132
|
} else {
|
6081
6133
|
$$tagInfo{Groups} = { %{$$tagTablePtr{GROUPS}} };
|
@@ -6122,7 +6174,7 @@ sub AddTagToTable($$;$$)
|
|
6122
6174
|
sub HandleTag($$$$;%)
|
6123
6175
|
{
|
6124
6176
|
my ($self, $tagTablePtr, $tag, $val, %parms) = @_;
|
6125
|
-
my $verbose =
|
6177
|
+
my $verbose = $$self{OPTIONS}{Verbose};
|
6126
6178
|
my $tagInfo = $parms{TagInfo} || $self->GetTagInfo($tagTablePtr, $tag, \$val);
|
6127
6179
|
my $dataPt = $parms{DataPt};
|
6128
6180
|
my ($subdir, $format, $count, $size, $noTagInfo, $rational);
|
@@ -6228,15 +6280,15 @@ sub FoundTag($$$)
|
|
6228
6280
|
# make temporary hash if tag doesn't exist in Extra
|
6229
6281
|
# (not advised to do this since the tag won't show in list)
|
6230
6282
|
$tagInfo or $tagInfo = { Name => $tag, Groups => \%allGroupsExifTool };
|
6231
|
-
|
6283
|
+
$$self{OPTIONS}{Verbose} and $self->VerboseInfo(undef, $tagInfo, Value => $value);
|
6232
6284
|
}
|
6233
6285
|
# get tag priority
|
6234
6286
|
my $priority = $$tagInfo{Priority};
|
6235
6287
|
unless (defined $priority) {
|
6236
|
-
$priority =
|
6288
|
+
$priority = $$tagInfo{Table}{PRIORITY};
|
6237
6289
|
$priority = 0 if not defined $priority and $$tagInfo{Avoid};
|
6238
6290
|
}
|
6239
|
-
my $valueHash =
|
6291
|
+
my $valueHash = $$self{VALUE};
|
6240
6292
|
if ($$tagInfo{RawConv}) {
|
6241
6293
|
# initialize @val for use in Composite RawConv expressions
|
6242
6294
|
my @val;
|
@@ -6261,14 +6313,14 @@ sub FoundTag($$$)
|
|
6261
6313
|
# handle duplicate tag names
|
6262
6314
|
if (defined $$valueHash{$tag}) {
|
6263
6315
|
# add to list if there is an active list for this tag
|
6264
|
-
if (
|
6265
|
-
$tag =
|
6316
|
+
if ($$self{LIST_TAGS}{$tagInfo}) {
|
6317
|
+
$tag = $$self{LIST_TAGS}{$tagInfo}; # use key from previous list tag
|
6266
6318
|
if (defined $$self{NO_LIST}) {
|
6267
6319
|
# accumulate list in TAG_EXTRA "NoList" element
|
6268
|
-
if (defined
|
6269
|
-
push @{
|
6320
|
+
if (defined $$self{TAG_EXTRA}{$tag}{NoList}) {
|
6321
|
+
push @{$$self{TAG_EXTRA}{$tag}{NoList}}, $value;
|
6270
6322
|
} else {
|
6271
|
-
|
6323
|
+
$$self{TAG_EXTRA}{$tag}{NoList} = [ $$valueHash{$tag}, $value ];
|
6272
6324
|
}
|
6273
6325
|
$noListDel = 1; # set flag to delete this tag if re-listed
|
6274
6326
|
} else {
|
@@ -6280,17 +6332,17 @@ sub FoundTag($$$)
|
|
6280
6332
|
}
|
6281
6333
|
}
|
6282
6334
|
# get next available tag key
|
6283
|
-
my $nextInd =
|
6335
|
+
my $nextInd = $$self{DUPL_TAG}{$tag} = ($$self{DUPL_TAG}{$tag} || 0) + 1;
|
6284
6336
|
my $nextTag = "$tag ($nextInd)";
|
6285
6337
|
#
|
6286
6338
|
# take tag with highest priority
|
6287
6339
|
#
|
6288
6340
|
# promote existing 0-priority tag so it takes precedence over a new 0-tag
|
6289
6341
|
# (unless old tag was a sub-document and new tag isn't)
|
6290
|
-
my $oldPriority =
|
6342
|
+
my $oldPriority = $$self{PRIORITY}{$tag};
|
6291
6343
|
unless ($oldPriority) {
|
6292
|
-
if (
|
6293
|
-
|
6344
|
+
if ($$self{DOC_NUM} or not $$self{TAG_EXTRA}{$tag} or
|
6345
|
+
not $$self{TAG_EXTRA}{$tag}{G3})
|
6294
6346
|
{
|
6295
6347
|
$oldPriority = 1;
|
6296
6348
|
} else {
|
@@ -6307,55 +6359,55 @@ sub FoundTag($$$)
|
|
6307
6359
|
} else {
|
6308
6360
|
$priority = 1; # the normal default
|
6309
6361
|
}
|
6310
|
-
if ($priority >= $oldPriority and not
|
6362
|
+
if ($priority >= $oldPriority and not $$self{DOC_NUM} and not $noListDel) {
|
6311
6363
|
# move existing tag out of the way since this tag is higher priority
|
6312
6364
|
# (NOTE: any new members added here must also be added to DeleteTag())
|
6313
|
-
|
6314
|
-
|
6365
|
+
$$self{MOVED_KEY} = $nextTag; # used in BuildCompositeTags()
|
6366
|
+
$$self{PRIORITY}{$nextTag} = $$self{PRIORITY}{$tag};
|
6315
6367
|
$$valueHash{$nextTag} = $$valueHash{$tag};
|
6316
|
-
|
6317
|
-
my $oldInfo =
|
6368
|
+
$$self{FILE_ORDER}{$nextTag} = $$self{FILE_ORDER}{$tag};
|
6369
|
+
my $oldInfo = $$self{TAG_INFO}{$nextTag} = $$self{TAG_INFO}{$tag};
|
6318
6370
|
foreach ('TAG_EXTRA','RATIONAL') {
|
6319
|
-
if (
|
6320
|
-
|
6321
|
-
delete
|
6371
|
+
if ($$self{$_}{$tag}) {
|
6372
|
+
$$self{$_}{$nextTag} = $$self{$_}{$tag};
|
6373
|
+
delete $$self{$_}{$tag};
|
6322
6374
|
}
|
6323
6375
|
}
|
6324
|
-
delete
|
6376
|
+
delete $$self{BOTH}{$tag};
|
6325
6377
|
# update tag key for list if necessary
|
6326
|
-
|
6378
|
+
$$self{LIST_TAGS}{$oldInfo} = $nextTag if $$self{LIST_TAGS}{$oldInfo};
|
6327
6379
|
} else {
|
6328
6380
|
$tag = $nextTag; # don't override the existing tag
|
6329
6381
|
}
|
6330
|
-
|
6331
|
-
|
6382
|
+
$$self{PRIORITY}{$tag} = $priority;
|
6383
|
+
$$self{TAG_EXTRA}{$tag}{NoListDel} = 1 if $noListDel;
|
6332
6384
|
} elsif ($priority) {
|
6333
6385
|
# set tag priority (only if exists and is non-zero)
|
6334
|
-
|
6386
|
+
$$self{PRIORITY}{$tag} = $priority;
|
6335
6387
|
}
|
6336
6388
|
|
6337
6389
|
# save the raw value, file order, tagInfo ref, group1 name,
|
6338
6390
|
# and tag key for lists if necessary
|
6339
6391
|
$$valueHash{$tag} = $value;
|
6340
|
-
|
6341
|
-
|
6392
|
+
$$self{FILE_ORDER}{$tag} = ++$$self{NUM_FOUND};
|
6393
|
+
$$self{TAG_INFO}{$tag} = $tagInfo;
|
6342
6394
|
# set dynamic groups 0, 1 and 3 if necessary
|
6343
|
-
|
6344
|
-
|
6345
|
-
if (
|
6346
|
-
|
6347
|
-
if (
|
6395
|
+
$$self{TAG_EXTRA}{$tag}{G0} = $$self{SET_GROUP0} if $$self{SET_GROUP0};
|
6396
|
+
$$self{TAG_EXTRA}{$tag}{G1} = $$self{SET_GROUP1} if $$self{SET_GROUP1};
|
6397
|
+
if ($$self{DOC_NUM}) {
|
6398
|
+
$$self{TAG_EXTRA}{$tag}{G3} = $$self{DOC_NUM};
|
6399
|
+
if ($$self{DOC_NUM} =~ /^(\d+)/) {
|
6348
6400
|
# keep track of maximum 1st-level sub-document number
|
6349
|
-
|
6401
|
+
$$self{DOC_COUNT} = $1 unless $$self{DOC_COUNT} >= $1;
|
6350
6402
|
}
|
6351
6403
|
}
|
6352
6404
|
# save path if requested
|
6353
|
-
|
6405
|
+
$$self{TAG_EXTRA}{$tag}{G5} = $self->MetadataPath() if $$self{OPTIONS}{SavePath};
|
6354
6406
|
|
6355
6407
|
# remember this tagInfo if we will be accumulating values in a list
|
6356
6408
|
# (but don't override earlier list if this may be deleted by NoListDel flag)
|
6357
6409
|
if ($$tagInfo{List} and not $$self{NO_LIST} and not $noListDel) {
|
6358
|
-
|
6410
|
+
$$self{LIST_TAGS}{$tagInfo} = $tag;
|
6359
6411
|
}
|
6360
6412
|
|
6361
6413
|
return $tag;
|
@@ -6367,7 +6419,7 @@ sub FoundTag($$$)
|
|
6367
6419
|
sub SetPriorityDir($)
|
6368
6420
|
{
|
6369
6421
|
my $self = shift;
|
6370
|
-
|
6422
|
+
$$self{PRIORITY_DIR} = $$self{DIR_NAME} unless $$self{PRIORITY_DIR};
|
6371
6423
|
}
|
6372
6424
|
|
6373
6425
|
#------------------------------------------------------------------------------
|
@@ -6376,7 +6428,7 @@ sub SetPriorityDir($)
|
|
6376
6428
|
sub SetGroup($$$;$)
|
6377
6429
|
{
|
6378
6430
|
my ($self, $tagKey, $extra, $fam) = @_;
|
6379
|
-
|
6431
|
+
$$self{TAG_EXTRA}{$tagKey}{defined $fam ? "G$fam" : 'G1'} = $extra;
|
6380
6432
|
}
|
6381
6433
|
|
6382
6434
|
#------------------------------------------------------------------------------
|
@@ -6385,13 +6437,13 @@ sub SetGroup($$$;$)
|
|
6385
6437
|
sub DeleteTag($$)
|
6386
6438
|
{
|
6387
6439
|
my ($self, $tag) = @_;
|
6388
|
-
delete
|
6389
|
-
delete
|
6390
|
-
delete
|
6391
|
-
delete
|
6392
|
-
delete
|
6393
|
-
delete
|
6394
|
-
delete
|
6440
|
+
delete $$self{VALUE}{$tag};
|
6441
|
+
delete $$self{FILE_ORDER}{$tag};
|
6442
|
+
delete $$self{TAG_INFO}{$tag};
|
6443
|
+
delete $$self{TAG_EXTRA}{$tag};
|
6444
|
+
delete $$self{PRIORITY}{$tag};
|
6445
|
+
delete $$self{RATIONAL}{$tag};
|
6446
|
+
delete $$self{BOTH}{$tag};
|
6395
6447
|
}
|
6396
6448
|
|
6397
6449
|
#------------------------------------------------------------------------------
|
@@ -6422,8 +6474,8 @@ sub DoEscape($$)
|
|
6422
6474
|
sub SetFileType($;$$)
|
6423
6475
|
{
|
6424
6476
|
my ($self, $fileType, $mimeType) = @_;
|
6425
|
-
unless (
|
6426
|
-
my $baseType =
|
6477
|
+
unless ($$self{VALUE}{FileType} and not $$self{DOC_NUM}) {
|
6478
|
+
my $baseType = $$self{FILE_TYPE};
|
6427
6479
|
$fileType or $fileType = $baseType;
|
6428
6480
|
$mimeType or $mimeType = $mimeType{$fileType};
|
6429
6481
|
# use base file type if necessary (except if 'TIFF', which is a special case)
|
@@ -6459,12 +6511,12 @@ sub ModifyMimeType($;$)
|
|
6459
6511
|
{
|
6460
6512
|
my ($self, $mime) = @_;
|
6461
6513
|
$mime =~ m{/} or $mime = $mimeType{$mime} or return;
|
6462
|
-
my $old =
|
6514
|
+
my $old = $$self{VALUE}{MIMEType};
|
6463
6515
|
if (defined $old) {
|
6464
6516
|
my ($a, $b) = split '/', $old;
|
6465
6517
|
my ($c, $d) = split '/', $mime;
|
6466
6518
|
$d =~ s/^x-//;
|
6467
|
-
|
6519
|
+
$$self{VALUE}{MIMEType} = "$c/$b-$d";
|
6468
6520
|
$self->VPrint(0, " Modified MIMEType = $c/$b-$d\n");
|
6469
6521
|
} else {
|
6470
6522
|
$self->FoundTag('MIMEType', $mime);
|
@@ -6478,9 +6530,10 @@ sub VPrint($$@)
|
|
6478
6530
|
{
|
6479
6531
|
my $self = shift;
|
6480
6532
|
my $level = shift;
|
6481
|
-
if (
|
6482
|
-
my $out =
|
6533
|
+
if ($$self{OPTIONS}{Verbose} and $$self{OPTIONS}{Verbose} > $level) {
|
6534
|
+
my $out = $$self{OPTIONS}{TextOut};
|
6483
6535
|
print $out @_;
|
6536
|
+
print $out "\n" unless $_[-1] =~ /\n$/;
|
6484
6537
|
}
|
6485
6538
|
}
|
6486
6539
|
|
@@ -6491,11 +6544,11 @@ sub VerboseDump($$;%)
|
|
6491
6544
|
{
|
6492
6545
|
my $self = shift;
|
6493
6546
|
my $dataPt = shift;
|
6494
|
-
if (
|
6547
|
+
if ($$self{OPTIONS}{Verbose} and $$self{OPTIONS}{Verbose} > 2) {
|
6495
6548
|
my %parms = (
|
6496
|
-
Prefix =>
|
6497
|
-
Out =>
|
6498
|
-
MaxLen =>
|
6549
|
+
Prefix => $$self{INDENT},
|
6550
|
+
Out => $$self{OPTIONS}{TextOut},
|
6551
|
+
MaxLen => $$self{OPTIONS}{Verbose} < 4 ? 96 : undef,
|
6499
6552
|
);
|
6500
6553
|
HexDump($dataPt, undef, %parms, @_);
|
6501
6554
|
}
|
@@ -6531,14 +6584,14 @@ sub ExtractBinary($$$;$)
|
|
6531
6584
|
$isPreview = 1;
|
6532
6585
|
}
|
6533
6586
|
my $lcTag = lc $tag;
|
6534
|
-
if ((not
|
6535
|
-
not
|
6587
|
+
if ((not $$self{OPTIONS}{Binary} or $$self{EXCL_TAG_LOOKUP}{$lcTag}) and
|
6588
|
+
not $$self{OPTIONS}{Verbose} and not $$self{REQ_TAG_LOOKUP}{$lcTag})
|
6536
6589
|
{
|
6537
6590
|
return "Binary data $length bytes";
|
6538
6591
|
}
|
6539
6592
|
}
|
6540
|
-
unless (
|
6541
|
-
and
|
6593
|
+
unless ($$self{RAF}->Seek($offset,0)
|
6594
|
+
and $$self{RAF}->Read($buff, $length) == $length)
|
6542
6595
|
{
|
6543
6596
|
$tag or $tag = 'binary data';
|
6544
6597
|
if ($isPreview and not $$self{BuildingComposite}) {
|
@@ -6564,8 +6617,8 @@ sub ProcessBinaryData($$$)
|
|
6564
6617
|
my $offset = $$dirInfo{DirStart} || 0;
|
6565
6618
|
my $size = $$dirInfo{DirLen} || (length($$dataPt) - $offset);
|
6566
6619
|
my $base = $$dirInfo{Base} || 0;
|
6567
|
-
my $verbose =
|
6568
|
-
my $unknown =
|
6620
|
+
my $verbose = $$self{OPTIONS}{Verbose};
|
6621
|
+
my $unknown = $$self{OPTIONS}{Unknown};
|
6569
6622
|
my $dataPos = $$dirInfo{DataPos} || 0;
|
6570
6623
|
|
6571
6624
|
# get default format ('int8u' unless specified)
|
@@ -6589,6 +6642,9 @@ sub ProcessBinaryData($$$)
|
|
6589
6642
|
} elsif ($$dirInfo{DataMember}) {
|
6590
6643
|
@tags = @{$$dirInfo{DataMember}};
|
6591
6644
|
$verbose = 0; # no verbose output of extracted values when writing
|
6645
|
+
} elsif ($$dirInfo{MixedTags}) {
|
6646
|
+
# process sorted integer-ID tags only
|
6647
|
+
@tags = sort { $a <=> $b } grep /^\d+$/, TagTableKeys($tagTablePtr);
|
6592
6648
|
} else {
|
6593
6649
|
# extract known tags in numerical order
|
6594
6650
|
@tags = sort { $a <=> $b } TagTableKeys($tagTablePtr);
|
@@ -6655,7 +6711,7 @@ sub ProcessBinaryData($$$)
|
|
6655
6711
|
$wasVar = 1;
|
6656
6712
|
# save variable size data if required for writing
|
6657
6713
|
if ($$dirInfo{VarFormatData}) {
|
6658
|
-
push @{$$dirInfo{VarFormatData}}, $index, $varSize;
|
6714
|
+
push @{$$dirInfo{VarFormatData}}, [ $index, $varSize, $format ];
|
6659
6715
|
}
|
6660
6716
|
}
|
6661
6717
|
} elsif ($format =~ /^var_/) {
|
@@ -6692,7 +6748,7 @@ sub ProcessBinaryData($$$)
|
|
6692
6748
|
$wasVar = 1;
|
6693
6749
|
# save variable size data if required for writing
|
6694
6750
|
if ($$dirInfo{VarFormatData}) {
|
6695
|
-
push @{$$dirInfo{VarFormatData}}, $index, $varSize;
|
6751
|
+
push @{$$dirInfo{VarFormatData}}, [ $index, $varSize, $format ];
|
6696
6752
|
}
|
6697
6753
|
}
|
6698
6754
|
}
|
@@ -6702,8 +6758,8 @@ sub ProcessBinaryData($$$)
|
|
6702
6758
|
eval $$tagInfo{Hook};
|
6703
6759
|
# save variable size data if required for writing (in case changed by Hook)
|
6704
6760
|
if ($$dirInfo{VarFormatData}) {
|
6705
|
-
$#{$$dirInfo{VarFormatData}} -=
|
6706
|
-
push @{$$dirInfo{VarFormatData}}, $index, $varSize;
|
6761
|
+
$#{$$dirInfo{VarFormatData}} -= 1 if $wasVar; # remove previous entry for this tag
|
6762
|
+
push @{$$dirInfo{VarFormatData}}, [ $index, $varSize, $format ];
|
6707
6763
|
}
|
6708
6764
|
}
|
6709
6765
|
if ($unknown > 1) {
|
@@ -6774,8 +6830,8 @@ sub ProcessBinaryData($$$)
|
|
6774
6830
|
next;
|
6775
6831
|
}
|
6776
6832
|
if ($$tagInfo{IsOffset} and $$tagInfo{IsOffset} ne '3') {
|
6777
|
-
my $
|
6778
|
-
#### eval IsOffset ($val, $
|
6833
|
+
my $et = $self;
|
6834
|
+
#### eval IsOffset ($val, $et)
|
6779
6835
|
$val += $base + $$self{BASE} if eval $$tagInfo{IsOffset};
|
6780
6836
|
}
|
6781
6837
|
$val{$index} = $val;
|