diff options
author | gregor herrmann <gregoa@debian.org> | 2019-08-09 03:01:30 +0200 |
---|---|---|
committer | gregor herrmann <gregoa@debian.org> | 2019-08-09 03:01:30 +0200 |
commit | 1bc3c046ecda595d2ac45a1ea48cfa0f8379c931 (patch) | |
tree | 15f3c041023d03435b9d904a83c49ae9148d0cfe | |
parent | 5f24e0e00bf808f10b30dac50f8ed3c116b4face (diff) | |
parent | d9d58769a958b8f958c1ae0254baab4bc11a9a5f (diff) |
Update upstream source from tag 'upstream/11.61'
Update to upstream version '11.61'
with Debian dir 46d0f84a9edf3f5aff92834b30849044ffd335df
58 files changed, 1412 insertions, 1030 deletions
@@ -7,6 +7,63 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml Note: The most recent production release is Version 11.50. (Other versions are considered development releases, and are not uploaded to CPAN.) +Aug. 7, 2019 - Version 11.61 + + - Added a new FujiFilm CropMode (thanks LibRaw) + - Added a couple of proprietary CustomRendered values (thanks Jeffrey Friedl) + - Added a new Nikon LensID and fixed a Canon LensType (thanks LibRaw) + - Added a new CanonModelID + - Decode more Sony DSC-RX100M7 tags (thanks Jos Roost) + - Write standard EXIF to PNG even if non-standard EXIF already exists + - Patched to avoid problems overriding new values when writing thumbnail and + preview images + - Changed a Minolta/Sony LensType (thanks LibRaw) + - Changed Composite GPS reference direction tags to be derived from only the + XMP-exif GPS coordinate tags (and not other XMP GPS coordinates) + - Reverted a PNG Validation check that was removed from 11.60 + +July 30, 2019 - Version 11.60 + + - Added a few new Sigma LensType values (thanks LibRaw) + - Updated Sony makernote decoding for the DSC-RX100M7 (thanks Jos Roost) + - Various internal improvements to PNG reader/writer + - Fixed bug in RIFF decoder that could cause an "undefined subroutine" error + (thanks Hayo Baan) + - Fixed problem writing some QuickTime tags if the PREFERRED levels were + changed via the config file + - Install Changes: + - Properly erase all temporary files after validation tests + +July 25, 2019 - Version 11.59 + + - Added a new SonyModelID (thanks LibRaw) + - Changed block delete to allow subsequent writing of tags from the same group + (like a group delete) + - Minor changes to warnings and verbose output when writing PNG images + - Fixed potential runtime warning on an error rewriting XMP in a PNG image + +July 25, 2019 - Version 11.58 + + - Added a number of new Canon and Sony LensType values (thanks LibRaw) + - Decode NikonMeteringMode for the D500 + - Decode LensID for Nikon Z lenses + - Extract RawThermalImage from Parrot Bebop-Pro Thermal images + - Validate PNG CRC values when writing or using the Validate option + - Improved Russian translation (thanks Andrei Korzhyts) + - Improved identification of some Tamron lenses for Canon cameras + - Changed name of D810MeteringMode tag to NikonMeteringMode + - Patched writing of XMP in PNG images to always come before IDAT, and warn if + XMP comes after IDAT when reading + - Fixed problem replacing multiple lang-alt default-language structure + elements in lists of XMP structures (behaviour for other languages still not + ideal) + - API Changes: + - Removed PNGEarlyXMP option + - Fixed problem introduced in 11.54 which caused Options('UserParam') to + return undef + - Internal Changes: + - A block delete of EXIF, XMP, IPTC, etc now sets the group delete flag + July 19, 2019 - Version 11.57 - Improved decoding of some tags for the Sony ILCE-7RM4 (thanks Jos Roost) @@ -883,6 +883,7 @@ t/XMP_45.out t/XMP_46.out t/XMP_47.out t/XMP_48.out +t/XMP_49.out t/XMP_5.out t/XMP_6.out t/XMP_7.out @@ -1059,6 +1060,7 @@ t/images/XMP4.xmp t/images/XMP5.xmp t/images/XMP6.xmp t/images/XMP7.xmp +t/images/XMP8.xmp t/images/ZIP.gz t/images/ZIP.zip t/images/iWork.numbers @@ -47,6 +47,6 @@ } }, "release_status" : "stable", - "version" : "11.57", + "version" : "11.61", "x_serialization_backend" : "JSON::PP version 4.02" } @@ -28,5 +28,5 @@ recommends: Time::HiRes: '0' requires: perl: '5.004' -version: '11.57' +version: '11.61' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' @@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a terminal window to extract and run ExifTool: cd ~/Desktop - gzip -dc Image-ExifTool-11.57.tar.gz | tar -xf - - cd Image-ExifTool-11.57 + gzip -dc Image-ExifTool-11.61.tar.gz | tar -xf - + cd Image-ExifTool-11.61 ./exiftool t/images/ExifTool.jpg Note: These commands extract meta information from one of the test images. @@ -10,7 +10,7 @@ use strict; require 5.004; -my $version = '11.57'; +my $version = '11.61'; # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool' my $exeDir; @@ -5157,7 +5157,7 @@ with this command: produces output like this: - -- Generated by ExifTool 11.57 -- + -- Generated by ExifTool 11.61 -- File: a.jpg - 2003:10:31 15:44:19 (f/5.6, 1/60s, ISO 100) File: b.jpg - 2006:05:23 11:57:38 diff --git a/html/ExifTool.html b/html/ExifTool.html index 600101d0..40f850fb 100644 --- a/html/ExifTool.html +++ b/html/ExifTool.html @@ -732,22 +732,6 @@ distribution for examples.</p> password-protected PDF documents. Ignored if a password is not required. Character encoding of the password is determined by the value of the Charset option at processing time.</td> <td align=center>Any string</td><td align=center>undef</td></tr> -<tr id="PNGEarlyXMP"><td>PNGEarlyXMP</td><td>Flag to write XMP in PNG - images before the IDAT (image data) chunk. By default, ExifTool adds new - XMP to the end of a PNG file (just before IEND). This is allowed by the PNG - and XMP specifications, but some utilities seem to ignore XMP if it comes - after the image data. The PNGEarlyXMP option causes ExifTool to instead add - new XMP before the PNG IDAT chunk. However, since ExifTool uses a - single-pass writing algorithm, it has no way to tell if XMP already exists - later in the file before writing the new XMP in this location. If this - happens, a minor error is issued when the extra XMP is encountered, and the - file is not written. Adding the <a href="#IgnoreMinorErrors">IgnoreMinorErrors</a> - option causes the XMP after IDAT to be deleted, thus resolving the conflict - (at the expense of possible metadata loss), and allowing the file to be - written. The PNGEarlyXMP option is applied automatically when deleting all - XMP and writing new XMP back in one step. When reading, this option causes - a warning to be issued if standard XMP is found after the IDAT chunk.</td> - <td align=center>0 or 1</td><td align=center>undef</td></tr> <tr id="PrintConv"><td>PrintConv</td><td>Flag to enable print conversion. Also enables inverse print conversion for writing.</td><td align=center>0 or 1</td><td align=center>1</td></tr> <tr id="QuickTimeHandler"><td>QuickTimeHandler</td><td>Flag set to add an 'mdir' @@ -973,9 +957,9 @@ Binary, Charset, CharsetEXIF, CharsetFileName, CharsetID3, CharsetIPTC, CharsetPhotoshop, CharsetQuickTime, CharsetRIFF, Composite, ExtendedXMP, ExtractEmbedded, FastScan, FixBase, HtmlDump, HtmlDumpBase, IgnoreMinorErrors, Lang, LargeFileSupport, MakerNotes, MDItemTags, -NoPDFList, Password, PNGEarlyXMP, QuickTimeUTC (enforced 1904 time zero), -RequestAll, RequestTags, ScanForXMP, Struct, TextOut, Unknown, Verbose, -XAttrTags and XMPAutoConv. +NoPDFList, Password, QuickTimeUTC (enforced 1904 time zero), RequestAll, +RequestTags, ScanForXMP, Struct, TextOut, Unknown, Verbose, XAttrTags and +XMPAutoConv. </blockquote> <hr><h2><a name="GetInfo">GetInfo</a></h2> @@ -1096,8 +1080,8 @@ and Warning tags.</p> <a href="#WriteInfo">WriteInfo</a>:</p> <blockquote> ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact, -Compress, FixBase, IgnoreMinorErrors, Password, PNGEarlyXMP, QuickTimeHandler, -Verbose and WriteMode. +Compress, FixBase, IgnoreMinorErrors, Password, QuickTimeHandler, Verbose +and WriteMode. </blockquote> <hr><h2><a name="GetTagList">GetTagList</a></h2> diff --git a/html/TagNames/Canon.html b/html/TagNames/Canon.html index a7ad3379..c325caa5 100644 --- a/html/TagNames/Canon.html +++ b/html/TagNames/Canon.html @@ -538,6 +538,7 @@ <tr class=h><th>Value</th><th>CanonModelID</th></tr> <tr><td class=r>0x412</td><td>= EOS M50 / Kiss M</td> </tr><tr><td class=r>0x801</td><td>= PowerShot SX740 HS</td> +</tr><tr><td class=r>0x804</td><td>= PowerShot G5 X Mark II</td> </tr><tr><td class=r>0x805</td><td>= PowerShot SX70 HS</td> </tr><tr><td class=r>0x808</td><td>= PowerShot G7 X Mark III</td> </tr><tr><td class=r>0x1010000</td><td>= PowerShot A30</td> @@ -1447,6 +1448,7 @@ attempting to identify the specific lens model.</p> </tr><tr><td>103</td><td>= Samyang AF 14mm f/2.8 EF or Rokinon Lens</td> </tr><tr><td>103.1</td><td>= Rokinon SP 14mm f/2.4</td> </tr><tr><td>103.2</td><td>= Rokinon AF 14mm f/2.8 EF</td> +</tr><tr><td>106</td><td>= Rokinon SP / Samyang XP 35mm f/1.2</td> </tr><tr><td>124</td><td>= Canon MP-E 65mm f/2.8 1-5x Macro Photo</td> </tr><tr><td>125</td><td>= Canon TS-E 24mm f/3.5L</td> </tr><tr><td>126</td><td>= Canon TS-E 45mm f/2.8</td> @@ -1500,6 +1502,7 @@ attempting to identify the specific lens model.</p> </tr><tr><td>150.2</td><td>= Sigma 30mm f/1.4 DC HSM</td> </tr><tr><td>150.3</td><td>= Sigma 24mm f/1.8 DG Macro EX</td> </tr><tr><td>150.4</td><td>= Sigma 28mm f/1.8 DG Macro EX</td> +</tr><tr><td>150.5</td><td>= Sigma 18-35mm f/1.8 DC HSM | A</td> </tr><tr><td>151</td><td>= Canon EF 200mm f/2.8L USM</td> </tr><tr><td>152</td><td>= Canon EF 300mm f/4L IS USM or Sigma Lens</td> </tr><tr><td>152.1</td><td>= Sigma 12-24mm f/4.5-5.6 EX DG ASPHERICAL HSM</td> @@ -1513,7 +1516,8 @@ attempting to identify the specific lens model.</p> </tr><tr><td>153.4</td><td>= Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro</td> </tr><tr><td>154</td><td>= Canon EF 20mm f/2.8 USM or Zeiss Lens</td> </tr><tr><td>154.1</td><td>= Zeiss Milvus 21mm f/2.8</td> -</tr><tr><td>155</td><td>= Canon EF 85mm f/1.8 USM</td> +</tr><tr><td>155</td><td>= Canon EF 85mm f/1.8 USM or Sigma Lens</td> +</tr><tr><td>155.1</td><td>= Sigma 14mm f/1.8 DG HSM | A</td> </tr><tr><td>156</td><td>= Canon EF 28-105mm f/3.5-4.5 USM or Tamron Lens</td> </tr><tr><td>156.1</td><td>= Tamron SP 70-300mm f/4-5.6 Di VC USD</td> </tr><tr><td>156.2</td><td>= Tamron SP AF 28-105mm f/2.8 LD Aspherical IF</td> @@ -1576,6 +1580,7 @@ attempting to identify the specific lens model.</p> </tr><tr><td>180.7</td><td>= Sigma 50mm f/1.5 FF High-Speed Prime | 017</td> </tr><tr><td>180.8</td><td>= Sigma 85mm f/1.5 FF High-Speed Prime | 017</td> </tr><tr><td>180.9</td><td>= Tokina Opera 50mm f/1.4 FF</td> +</tr><tr><td>180.10</td><td>= Sigma 20mm f/1.4 DG HSM | A</td> </tr><tr><td>181</td><td>= Canon EF 100-400mm f/4.5-5.6L IS USM + 1.4x or Sigma Lens</td> </tr><tr><td>181.1</td><td>= Sigma 150-600mm f/5-6.3 DG OS HSM | S + 1.4x</td> </tr><tr><td>182</td><td>= Canon EF 100-400mm f/4.5-5.6L IS USM + 2x or Sigma Lens</td> @@ -1677,6 +1682,7 @@ attempting to identify the specific lens model.</p> </tr><tr><td>368.4</td><td>= Sigma 60-600mm f/4.5-6.3 DG OS HSM | S</td> </tr><tr><td>368.5</td><td>= Sigma 28mm f/1.4 DG HSM | A</td> </tr><tr><td>368.6</td><td>= Sigma 150-600mm f/5-6.3 DG OS HSM | S</td> +</tr><tr><td>368.7</td><td>= Sigma 85mm f/1.4 DG HSM | A</td> </tr><tr><td>488</td><td>= Canon EF-S 15-85mm f/3.5-5.6 IS USM</td> </tr><tr><td>489</td><td>= Canon EF 70-300mm f/4-5.6L IS USM</td> </tr><tr><td>490</td><td>= Canon EF 8-15mm f/4L Fisheye USM</td> @@ -1734,7 +1740,7 @@ attempting to identify the specific lens model.</p> </tr><tr><td>4154</td><td>= Canon EF-S 24mm f/2.8 STM</td> </tr><tr><td>4155</td><td>= Canon EF-M 28mm f/3.5 Macro IS STM</td> </tr><tr><td>4156</td><td>= Canon EF 50mm f/1.8 STM</td> -</tr><tr><td>4157</td><td>= Canon EF-M 18-150mm 1:3.5-6.3 IS STM</td> +</tr><tr><td>4157</td><td>= Canon EF-M 18-150mm f/3.5-6.3 IS STM</td> </tr><tr><td>4158</td><td>= Canon EF-S 18-55mm f/4-5.6 IS STM</td> </tr><tr><td>4159</td><td>= Canon EF-M 32mm f/1.4 STM</td> </tr><tr><td>4160</td><td>= Canon EF-S 35mm f/2.8 Macro IS STM</td> @@ -1744,6 +1750,7 @@ attempting to identify the specific lens model.</p> </tr><tr><td>61182.1</td><td>= Canon RF 50mm F1.2 L USM</td> </tr><tr><td>61182.2</td><td>= Canon RF 24-105mm F4 L IS USM</td> </tr><tr><td>61182.3</td><td>= Canon RF 28-70mm F2 L USM</td> +</tr><tr><td>61182.4</td><td>= Canon RF 85mm F1.2L USM</td> </tr><tr><td>61491</td><td>= Canon CN-E 14mm T3.1 L F</td> </tr><tr><td>61492</td><td>= Canon CN-E 24mm T1.5 L F</td> </tr><tr><td>61494</td><td>= Canon CN-E 85mm T1.3 L F</td> @@ -10459,7 +10466,7 @@ SX280, and CR3 images from cameras such as the EOS M50.</p> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jul 15, 2019</i> +<br><i>Last revised Aug 7, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/Composite.html b/html/TagNames/Composite.html index 1d7c5aae..57e8339a 100644 --- a/html/TagNames/Composite.html +++ b/html/TagNames/Composite.html @@ -327,7 +327,7 @@ manual mode)</span> <tr> <td>GPSDestLatitudeRef</td> <td class=c>no</td> -<td class=n>XMP:GPSDestLatitude</td> +<td class=n>XMP-exif:GPSDestLatitude</td> <td><span class=s>'N' = North <br>'S' = South</span></td></tr> <tr class=b> @@ -339,7 +339,7 @@ manual mode)</span> <tr> <td>GPSDestLongitudeRef</td> <td class=c>no</td> -<td class=n>XMP:GPSDestLongitude</td> +<td class=n>XMP-exif:GPSDestLongitude</td> <td><span class=s>'E' = East <br>'W' = West</span></td></tr> <tr class=b> @@ -361,7 +361,7 @@ manual mode)</span> <tr> <td>GPSLatitudeRef</td> <td class=c>no</td> -<td class=n>XMP:GPSLatitude</td> +<td class=n>XMP-exif:GPSLatitude</td> <td><span class=s>'N' = North <br>'S' = South</span></td></tr> <tr class=b> @@ -383,7 +383,7 @@ manual mode)</span> <tr> <td>GPSLongitudeRef</td> <td class=c>no</td> -<td class=n>XMP:GPSLongitude</td> +<td class=n>XMP-exif:GPSLongitude</td> <td><span class=s>'E' = East <br>'W' = West</span></td></tr> <tr class=b> @@ -774,7 +774,7 @@ those of the originating tags)</span></span></td></tr> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jul 3, 2019</i> +<br><i>Last revised Aug 6, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/EXIF.html b/html/TagNames/EXIF.html index 8ef28baf..f757ce2c 100644 --- a/html/TagNames/EXIF.html +++ b/html/TagNames/EXIF.html @@ -2309,12 +2309,16 @@ indicated by "Uncalibrated" with an InteropIndex of "R03". <td class=c>int16u</td> <td class=c>ExifIFD</td> <td><span class=s><span class=n>(only 0 and 1 are standard EXIF, but other values are used by Apple iOS -devices)</span> - <br>0 = Normal +devices)</span></span><table class=cols><tr> + <td>0 = Normal <br>1 = Custom - <br>3 = HDR + <br>2 = HDR (no original saved) + <br>3 = HDR (original saved) + <br>4 = Original (for HDR) <br>6 = Panorama - <br>8 = Portrait</span></td></tr> + <br>7 = Portrait HDR + <br>8 = Portrait</td></tr></table> +</td></tr> <tr> <td title='0xa402 = 41986'>0xa402</td> <td><u>ExposureMode</u></td> @@ -3612,7 +3616,7 @@ these unless they already exist in the file)</span></span></td></tr> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jun 27, 2019</i> +<br><i>Last revised Aug 7, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/FujiFilm.html b/html/TagNames/FujiFilm.html index 50df3b0e..c7b84909 100644 --- a/html/TagNames/FujiFilm.html +++ b/html/TagNames/FujiFilm.html @@ -334,6 +334,7 @@ the date of manufacture)</span></span></td></tr> <td>CropMode</td> <td class=c>int16u</td> <td><span class=s>0 = n/a + <br>1 = Full-frame on GFX <br>2 = Sports Finder Mode <br>4 = Electronic Shutter 1.25x Crop</span></td></tr> <tr> @@ -1153,7 +1154,7 @@ RAF-format information.</p> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Apr 30, 2019</i> +<br><i>Last revised Jul 31, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/JPEG.html b/html/TagNames/JPEG.html index 502167a1..c82373b9 100644 --- a/html/TagNames/JPEG.html +++ b/html/TagNames/JPEG.html @@ -34,13 +34,15 @@ <br>ExtendedXMP <br>XMP <br>QVCI - <br>FLIR</td> -<td class=c>-<br>-<br>-<br>-<br>-</td> + <br>FLIR + <br>RawThermalImage</td> +<td class=c>-<br>-<br>-<br>-<br>-<br>no</td> <td>--> <a href='EXIF.html'>EXIF Tags</a> <br>--> <a href='XMP.html'>XMP Tags</a> <br>--> <a href='XMP.html'>XMP Tags</a> <br>--> <a href='Casio.html#QVCI'>Casio QVCI Tags</a> - <br>--> <a href='FLIR.html#FFF'>FLIR FFF Tags</a></td></tr> + <br>--> <a href='FLIR.html#FFF'>FLIR FFF Tags</a> + <br><span class=n>(thermal image from Parrot Bebop-Pro Thermal drone)</span></td></tr> <tr> <td>'APP2'</td> <td>ICC_Profile @@ -606,7 +608,7 @@ because it may affect the appearance of the image.</p> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jul 12, 2019</i> +<br><i>Last revised Jul 22, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/Minolta.html b/html/TagNames/Minolta.html index 38699027..f1987230 100644 --- a/html/TagNames/Minolta.html +++ b/html/TagNames/Minolta.html @@ -430,7 +430,7 @@ adapter is used.</p> </tr><tr><td>137</td><td>= Cosina 70-210mm F2.8-4 AF</td> </tr><tr><td>138</td><td>= Soligor 19-35mm F3.5-4.5</td> </tr><tr><td>139</td><td>= Tokina AF 28-300mm F4-6.3</td> -</tr><tr><td>142</td><td>= Voigtlander 70-300mm F4.5-5.6</td> +</tr><tr><td>142</td><td>= Cosina AF 70-300mm F4.5-5.6 MC</td> </tr><tr><td>146</td><td>= Voigtlander Macro APO-Lanthar 125mm F2.5 SL</td> </tr><tr><td>194</td><td>= Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical [IF]</td> </tr><tr><td>202</td><td>= Tamron SP AF 70-200mm F2.8 Di LD [IF] Macro</td> @@ -2588,7 +2588,7 @@ DiMAGE X and Xt.</p> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jul 15, 2019</i> +<br><i>Last revised Aug 6, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/Nikon.html b/html/TagNames/Nikon.html index ec2d43db..05e32539 100644 --- a/html/TagNames/Nikon.html +++ b/html/TagNames/Nikon.html @@ -2504,7 +2504,7 @@ different for other firmware versions.</p> </td></tr> <tr class=b> <td class=r title='5982 = 0x175e'>5982</td> -<td>D810MeteringMode</td> +<td>NikonMeteringMode</td> <td class=c>int8u</td> <td><span class=s>[val & 0x3] <br>0 = Matrix @@ -3376,6 +3376,16 @@ firmware 1.01b.</p> <td>YawAngle</td> <td class=c>fixed32u</td> <td><span class=s><span class=n>(the camera yaw angle when shooting in portrait orientation)</span></span></td></tr> +<tr class=b> +<td class=r title='11940 = 0x2ea4'>11940</td> +<td>NikonMeteringMode</td> +<td class=c>int8u</td> +<td><span class=s><span class=n>(D500 only)</span> + <br>[val & 0x3] + <br>0 = Matrix + <br>1 = Center + <br>2 = Spot + <br>3 = Highlight</span></td></tr> </table></td></tr></table></blockquote> <h2><a name='ShotInfoD610'>Nikon ShotInfoD610 Tags</a></h2> @@ -3893,16 +3903,25 @@ extracted.</p> <td class=c>int8u</td> <td> </td></tr> <tr> +<td class=r title='48 = 0x30'>48</td> +<td>LensID</td> +<td class=c>int16u</td> +<td><span class=s>1 = Nikkor Z 24-70mm f/4 S + <br>2 = Nikkor Z 14-30mm f/4 S + <br>4 = Nikkor Z 35mm f/1.8 S + <br>9 = Nikkor Z 50mm f/1.8 S + <br>13 = Nikkor Z 24-70mm f/2.8 S</span></td></tr> +<tr class=b> <td class=r title='54 = 0x36'>54</td> <td>MaxAperture</td> <td class=c>int16u</td> <td> </td></tr> -<tr class=b> +<tr> <td class=r title='56 = 0x38'>56</td> <td>FNumber</td> <td class=c>int16u</td> <td> </td></tr> -<tr> +<tr class=b> <td class=r title='60 = 0x3c'>60</td> <td>FocalLength</td> <td class=c>int16u</td> @@ -6984,6 +7003,7 @@ used to specify the lens for ExifTool to choose in these cases (see the </tr><tr><td>'AA 48 88 A4 3C 3C D5 4E'</td><td>= AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR + 1.4x TC</td> </tr><tr><td>'AB 3C A0 A0 30 30 C6 4E'</td><td>= AF-S Nikkor 500mm f/4E FL ED VR</td> </tr><tr><td>'AB 44 5C 8E 34 3C D6 0E'</td><td>= AF-P Nikkor 70-300mm f/4.5-5.6E ED VR</td> +</tr><tr><td>'AB 44 5C 8E 34 3C D6 4E'</td><td>= AF-P Nikkor 70-300mm f/4.5-5.6E ED VR</td> </tr><tr><td>'AB 44 5C 8E 34 3C D6 CE'</td><td>= AF-P Nikkor 70-300mm f/4.5-5.6E ED VR</td> </tr><tr><td>'AC 38 53 8E 34 3C AE 0E'</td><td>= AF-S DX Nikkor 55-300mm f/4.5-5.6G ED VR</td> </tr><tr><td>'AC 3C A6 A6 30 30 C7 4E'</td><td>= AF-S Nikkor 600mm f/4E FL ED VR</td> @@ -7085,7 +7105,7 @@ used to specify the lens for ExifTool to choose in these cases (see the <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jul 17, 2019</i> +<br><i>Last revised Aug 7, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/QuickTime.html b/html/TagNames/QuickTime.html index 3c1983e0..d49e54aa 100644 --- a/html/TagNames/QuickTime.html +++ b/html/TagNames/QuickTime.html @@ -712,7 +712,7 @@ that by default, preferred when writing, so to create a tag when a same-named tag exists in either of these tables, either the "Keys" location must be specified (eg. <code>-Keys:Author=Phil</code> on the command line), or the PREFERRED level must be -changed via the config file.</p> +changed via <a href="../config.html#PREF">the config file</a>.</p> <blockquote> <table class=frame><tr><td> <table class=inner cellspacing=1> @@ -6453,8 +6453,8 @@ Note when creating new tags, <a href="QuickTime.html#ItemList">ItemList</a> tags are preferred over these, so to create the tag when a same-named ItemList tag exists, either "UserData" must be specified (eg. <code>-UserData:Artist=Monet</code> -on the command line), or the PREFERRED level must be changed via the config -file.</p> +on the command line), or the PREFERRED level must be changed via +<a href="../config.html#PREF">the config file</a>.</p> <blockquote> <table class=frame><tr><td> <table class=inner cellspacing=1> @@ -7859,7 +7859,7 @@ file.</p> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jul 18, 2019</i> +<br><i>Last revised Jul 29, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/RIFF.html b/html/TagNames/RIFF.html index 88c896c4..c4ab4473 100644 --- a/html/TagNames/RIFF.html +++ b/html/TagNames/RIFF.html @@ -282,25 +282,25 @@ sub-documents, but the Duration is calculated for the full video.</p> <blockquote> <table class=frame><tr><td> <table class=inner cellspacing=1> -<tr class=h><th>Tag ID</th><th>Tag Name</th> +<tr class=h><th>Index2</th><th>Tag Name</th> <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr> <tr> -<td title='0x0000 = 0'>0x0000</td> +<td class=r title='0 = 0x0'>0</td> <td>CodePage</td> <td class=c>no</td> <td> </td></tr> <tr class=b> -<td title='0x0001 = 1'>0x0001</td> +<td class=r title='1 = 0x1'>1</td> <td>CountryCode</td> <td class=c>no</td> <td> </td></tr> <tr> -<td title='0x0002 = 2'>0x0002</td> +<td class=r title='2 = 0x2'>2</td> <td>LanguageCode</td> <td class=c>no</td> <td> </td></tr> <tr class=b> -<td title='0x0003 = 3'>0x0003</td> +<td class=r title='3 = 0x3'>3</td> <td>Dialect</td> <td class=c>no</td> <td> </td></tr> @@ -1460,7 +1460,7 @@ container specification.</p> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jun 21, 2019</i> +<br><i>Last revised Jul 29, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/Sigma.html b/html/TagNames/Sigma.html index 821ce61d..523d8abf 100644 --- a/html/TagNames/Sigma.html +++ b/html/TagNames/Sigma.html @@ -449,96 +449,100 @@ LensID tag when attempting to identify the specific lens model.</p> </tr><tr><td>0x256</td><td>= Sigma 105mm F2.8 EX Macro</td> <td class=b>0x729</td><td class=b>= Sigma 100-400mm F5-6.3 DG OS HSM | C</td> </tr><tr><td>0x257</td><td>= Sigma 105mm F2.8 EX DG Macro</td> -<td class=b>0x733</td><td class=b>= Sigma 170-500mm F5-6.3 ASP APO</td> +<td class=b>0x730</td><td class=b>= Sigma 60-600mm F4.5-6.3 DG OS HSM | S</td> </tr><tr><td>0x258</td><td>= Sigma 105mm F2.8 EX DG OS HSM Macro</td> +<td class=b>0x733</td><td class=b>= Sigma 170-500mm F5-6.3 ASP APO</td> +</tr><tr><td>0x259</td><td>= Sigma 105mm F1.4 DG HSM | A</td> <td class=b>0x734</td><td class=b>= Sigma 170-500mm F5-6.3 DG ASP APO</td> </tr><tr><td>0x270</td><td>= Sigma 70mm F2.8 EX DG Macro</td> <td class=b>0x735</td><td class=b>= Sigma 50-500mm F4-6.3 EX RF HSM APO</td> -</tr><tr><td>0x300</td><td>= Sigma 30mm F1.4 EX DC HSM</td> +</tr><tr><td>0x271</td><td>= Sigma 70mm F2.8 DG Macro | A</td> <td class=b>0x736</td><td class=b>= Sigma 50-500mm F4-6.3 EX DG HSM APO</td> -</tr><tr><td>0x301</td><td>= Sigma 30mm F1.4 DC HSM | A</td> +</tr><tr><td>0x300</td><td>= Sigma 30mm F1.4 EX DC HSM</td> <td class=b>0x737</td><td class=b>= Sigma 150-500mm F5-6.3 APO DG OS HSM</td> -</tr><tr><td>0x302</td><td>= Sigma 30mm F1.4 DC DN | C</td> +</tr><tr><td>0x301</td><td>= Sigma 30mm F1.4 DC HSM | A</td> <td class=b>0x738</td><td class=b>= Sigma 50-500mm F4.5-6.3 APO DG OS HSM</td> -</tr><tr><td>0x310</td><td>= Sigma 50mm F1.4 EX DG HSM</td> +</tr><tr><td>0x302</td><td>= Sigma 30mm F1.4 DC DN | C</td> <td class=b>0x740</td><td class=b>= Sigma 150-600mm F5-6.3 DG OS HSM | S</td> -</tr><tr><td>0x311</td><td>= Sigma 50mm F1.4 DG HSM | A</td> +</tr><tr><td>0x310</td><td>= Sigma 50mm F1.4 EX DG HSM</td> <td class=b>0x745</td><td class=b>= Sigma 150-600mm F5-6.3 DG OS HSM | C</td> -</tr><tr><td>0x320</td><td>= Sigma 85mm F1.4 EX DG HSM</td> +</tr><tr><td>0x311</td><td>= Sigma 50mm F1.4 DG HSM | A</td> <td class=b>0x777</td><td class=b>= Sigma 18-200mm F3.5-6.3 DC</td> -</tr><tr><td>0x321</td><td>= Sigma 85mm F1.4 DG HSM | A</td> +</tr><tr><td>0x320</td><td>= Sigma 85mm F1.4 EX DG HSM</td> <td class=b>0x77d</td><td class=b>= Sigma 18-200mm F3.5-6.3 DC (Motorized)</td> -</tr><tr><td>0x330</td><td>= Sigma 30mm F2.8 EX DN</td> +</tr><tr><td>0x321</td><td>= Sigma 85mm F1.4 DG HSM | A</td> <td class=b>0x787</td><td class=b>= Sigma 28-200mm F3.5-5.6 Compact ASP HZ Macro</td> -</tr><tr><td>0x340</td><td>= Sigma 35mm F1.4 DG HSM</td> +</tr><tr><td>0x330</td><td>= Sigma 30mm F2.8 EX DN</td> <td class=b>0x789</td><td class=b>= Sigma 18-125mm F3.5-5.6 DC</td> -</tr><tr><td>0x345</td><td>= Sigma 50mm F2.8 EX Macro</td> +</tr><tr><td>0x340</td><td>= Sigma 35mm F1.4 DG HSM</td> <td class=b>0x793</td><td class=b>= Sigma 28-300mm F3.5-6.3 Macro</td> -</tr><tr><td>0x346</td><td>= Sigma 50mm F2.8 EX DG Macro</td> +</tr><tr><td>0x345</td><td>= Sigma 50mm F2.8 EX Macro</td> <td class=b>0x794</td><td class=b>= Sigma 28-200mm F3.5-5.6 DG Compact ASP HZ Macro</td> -</tr><tr><td>0x350</td><td>= Sigma 60mm F2.8 DN | A</td> +</tr><tr><td>0x346</td><td>= Sigma 50mm F2.8 EX DG Macro</td> <td class=b>0x795</td><td class=b>= Sigma 28-300mm F3.5-6.3 DG Macro</td> -</tr><tr><td>0x400</td><td>= Sigma 19mm F2.8 EX DN</td> +</tr><tr><td>0x350</td><td>= Sigma 60mm F2.8 DN | A</td> <td class=b>0x823</td><td class=b>= Sigma 1.4X TC EX APO</td> -</tr><tr><td>0x401</td><td>= Sigma 24mm F1.4 DG HSM | A</td> +</tr><tr><td>0x400</td><td>= Sigma 19mm F2.8 EX DN</td> <td class=b>0x824</td><td class=b>= Sigma 1.4X Teleconverter EX APO DG</td> -</tr><tr><td>0x411</td><td>= Sigma 20mm F1.8 EX DG ASP RF</td> +</tr><tr><td>0x401</td><td>= Sigma 24mm F1.4 DG HSM | A</td> <td class=b>0x853</td><td class=b>= Sigma 18-125mm F3.8-5.6 DC OS HSM</td> -</tr><tr><td>0x412</td><td>= Sigma 20mm F1.4 DG HSM | A</td> +</tr><tr><td>0x411</td><td>= Sigma 20mm F1.8 EX DG ASP RF</td> <td class=b>0x861</td><td class=b>= Sigma 18-50mm F2.8-4.5 DC OS HSM</td> -</tr><tr><td>0x432</td><td>= Sigma 24mm F1.8 EX DG ASP Macro</td> +</tr><tr><td>0x412</td><td>= Sigma 20mm F1.4 DG HSM | A</td> <td class=b>0x870</td><td class=b>= Sigma 2.0X Teleconverter TC-2001</td> -</tr><tr><td>0x440</td><td>= Sigma 28mm F1.8 EX DG ASP Macro</td> +</tr><tr><td>0x432</td><td>= Sigma 24mm F1.8 EX DG ASP Macro</td> <td class=b>0x875</td><td class=b>= Sigma 2.0X TC EX APO</td> -</tr><tr><td>0x450</td><td>= Sigma 14mm F1.8 DH HSM | A</td> +</tr><tr><td>0x440</td><td>= Sigma 28mm F1.8 EX DG ASP Macro</td> <td class=b>0x876</td><td class=b>= Sigma 2.0X Teleconverter EX APO DG</td> -</tr><tr><td>0x461</td><td>= Sigma 14mm F2.8 EX ASP HSM</td> +</tr><tr><td>0x450</td><td>= Sigma 14mm F1.8 DH HSM | A</td> <td class=b>0x879</td><td class=b>= Sigma 1.4X Teleconverter TC-1401</td> -</tr><tr><td>0x475</td><td>= Sigma 15mm F2.8 EX Diagonal FishEye</td> +</tr><tr><td>0x461</td><td>= Sigma 14mm F2.8 EX ASP HSM</td> <td class=b>0x880</td><td class=b>= Sigma 18-250mm F3.5-6.3 DC OS HSM</td> -</tr><tr><td>0x476</td><td>= Sigma 15mm F2.8 EX DG Diagonal Fisheye</td> +</tr><tr><td>0x475</td><td>= Sigma 15mm F2.8 EX Diagonal FishEye</td> <td class=b>0x882</td><td class=b>= Sigma 18-200mm F3.5-6.3 II DC OS HSM</td> -</tr><tr><td>0x477</td><td>= Sigma 10mm F2.8 EX DC HSM Fisheye</td> +</tr><tr><td>0x476</td><td>= Sigma 15mm F2.8 EX DG Diagonal Fisheye</td> <td class=b>0x883</td><td class=b>= Sigma 18-250mm F3.5-6.3 DC Macro OS HSM</td> -</tr><tr><td>0x483</td><td>= Sigma 8mm F4 EX Circular Fisheye</td> +</tr><tr><td>0x477</td><td>= Sigma 10mm F2.8 EX DC HSM Fisheye</td> <td class=b>0x884</td><td class=b>= Sigma 17-70mm F2.8-4 DC OS HSM Macro | C</td> -</tr><tr><td>0x484</td><td>= Sigma 8mm F4 EX DG Circular Fisheye</td> +</tr><tr><td>0x483</td><td>= Sigma 8mm F4 EX Circular Fisheye</td> <td class=b>0x885</td><td class=b>= Sigma 18-200mm F3.5-6.3 DC OS HSM Macro | C</td> -</tr><tr><td>0x485</td><td>= Sigma 8mm F3.5 EX DG Circular Fisheye</td> +</tr><tr><td>0x484</td><td>= Sigma 8mm F4 EX DG Circular Fisheye</td> <td class=b>0x886</td><td class=b>= Sigma 18-300mm F3.5-6.3 DC OS HSM Macro | C</td> -</tr><tr><td>0x486</td><td>= Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye</td> +</tr><tr><td>0x485</td><td>= Sigma 8mm F3.5 EX DG Circular Fisheye</td> <td class=b>0x888</td><td class=b>= Sigma 18-200mm F3.5-6.3 DC OS</td> -</tr><tr><td>0x506</td><td>= Sigma 70-300mm F4-5.6 APO Macro Super II</td> +</tr><tr><td>0x486</td><td>= Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye</td> <td class=b>0x890</td><td class=b>= Sigma Mount Converter MC-11</td> -</tr><tr><td>0x507</td><td>= Sigma 70-300mm F4-5.6 DL Macro Super II</td> +</tr><tr><td>0x506</td><td>= Sigma 70-300mm F4-5.6 APO Macro Super II</td> <td class=b>0x929</td><td class=b>= Sigma 60mm F2.8 DN | A</td> -</tr><tr><td>0x508</td><td>= Sigma 70-300mm F4-5.6 DG APO Macro</td> +</tr><tr><td>0x507</td><td>= Sigma 70-300mm F4-5.6 DL Macro Super II</td> <td class=b>0x1003</td><td class=b>= Sigma 19mm F2.8</td> -</tr><tr><td>0x509</td><td>= Sigma 70-300mm F4-5.6 DG Macro</td> +</tr><tr><td>0x508</td><td>= Sigma 70-300mm F4-5.6 DG APO Macro</td> <td class=b>0x1004</td><td class=b>= Sigma 30mm F2.8</td> -</tr><tr><td>0x510</td><td>= Sigma 17-35 F2.8-4 EX DG ASP</td> +</tr><tr><td>0x509</td><td>= Sigma 70-300mm F4-5.6 DG Macro</td> <td class=b>0x1005</td><td class=b>= Sigma 50mm F2.8 Macro</td> -</tr><tr><td>0x512</td><td>= Sigma 15-30mm F3.5-4.5 EX DG ASP DF</td> +</tr><tr><td>0x510</td><td>= Sigma 17-35 F2.8-4 EX DG ASP</td> <td class=b>0x1006</td><td class=b>= Sigma 19mm F2.8</td> -</tr><tr><td>0x513</td><td>= Sigma 20-40mm F2.8 EX DG</td> +</tr><tr><td>0x512</td><td>= Sigma 15-30mm F3.5-4.5 EX DG ASP DF</td> <td class=b>0x1007</td><td class=b>= Sigma 30mm F2.8</td> -</tr><tr><td>0x519</td><td>= Sigma 17-35 F2.8-4 EX ASP HSM</td> +</tr><tr><td>0x513</td><td>= Sigma 20-40mm F2.8 EX DG</td> <td class=b>0x1008</td><td class=b>= Sigma 50mm F2.8 Macro</td> -</tr><tr><td>0x520</td><td>= Sigma 100-300mm F4.5-6.7 DL</td> +</tr><tr><td>0x519</td><td>= Sigma 17-35 F2.8-4 EX ASP HSM</td> <td class=b>0x1009</td><td class=b>= Sigma 14mm F4</td> -</tr><tr><td>0x521</td><td>= Sigma 18-50mm F3.5-5.6 DC Macro</td> +</tr><tr><td>0x520</td><td>= Sigma 100-300mm F4.5-6.7 DL</td> <td class=b>0x8005</td><td class=b>= Sigma 35mm F1.4 DG HSM | A</td> -</tr><tr><td>0x527</td><td>= Sigma 100-300mm F4 EX IF HSM</td> +</tr><tr><td>0x521</td><td>= Sigma 18-50mm F3.5-5.6 DC Macro</td> <td class=b>0x8009</td><td class=b>= Sigma 18-35mm F1.8 DC HSM | A</td> -</tr><tr><td>0x529</td><td>= Sigma 120-300mm F2.8 EX HSM IF APO</td> +</tr><tr><td>0x527</td><td>= Sigma 100-300mm F4 EX IF HSM</td> <td class=b>0x8900</td><td class=b>= Sigma 70-300mm F4-5.6 DG OS</td> -</tr><tr><td>0x547</td><td>= Sigma 24-60mm F2.8 EX DG</td> +</tr><tr><td>0x529</td><td>= Sigma 120-300mm F2.8 EX HSM IF APO</td> <td class=b>0xa100</td><td class=b>= Sigma 24-70mm F2.8 DG Macro</td> +</tr><tr><td>0x547</td><td>= Sigma 24-60mm F2.8 EX DG</td> +<td class=b> </td><td class=b> </td> </tr></table></td></tr></table></blockquote> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Apr 23, 2019</i> +<br><i>Last revised Jul 30, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/Sony.html b/html/TagNames/Sony.html index f048fc74..a56096c4 100644 --- a/html/TagNames/Sony.html +++ b/html/TagNames/Sony.html @@ -979,6 +979,7 @@ toward magenta)</span></span></td></tr> <br>369 = DSC-RX100M5A <br>371 = ILCE-6400 <br>372 = DSC-RX0M2 + <br>374 = DSC-RX100M7 <br>375 = ILCE-7RM4</td></tr></table> </td></tr> <tr> @@ -1476,7 +1477,7 @@ adapter is used.</p> </tr><tr><td>137</td><td>= Cosina 70-210mm F2.8-4 AF</td> </tr><tr><td>138</td><td>= Soligor 19-35mm F3.5-4.5</td> </tr><tr><td>139</td><td>= Tokina AF 28-300mm F4-6.3</td> -</tr><tr><td>142</td><td>= Voigtlander 70-300mm F4.5-5.6</td> +</tr><tr><td>142</td><td>= Cosina AF 70-300mm F4.5-5.6 MC</td> </tr><tr><td>146</td><td>= Voigtlander Macro APO-Lanthar 125mm F2.5 SL</td> </tr><tr><td>194</td><td>= Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical [IF]</td> </tr><tr><td>202</td><td>= Tamron SP AF 70-200mm F2.8 Di LD [IF] Macro</td> @@ -4743,8 +4744,9 @@ multi-frame noise reduction)</span></span></td></tr> </tr><tr><td>32791</td><td>= Sony E 16-70mm F4 ZA OSS</td> </tr><tr><td>32792</td><td>= Sony E 10-18mm F4 OSS</td> </tr><tr><td>32793</td><td>= Sony E PZ 16-50mm F3.5-5.6 OSS</td> -</tr><tr><td>32794</td><td>= Sony FE 35mm F2.8 ZA or Samyang AF 24mm F2.8</td> +</tr><tr><td>32794</td><td>= Sony FE 35mm F2.8 ZA or Samyang Lens</td> </tr><tr><td>32794.1</td><td>= Samyang AF 24mm F2.8</td> +</tr><tr><td>32794.2</td><td>= Samyang AF 35mm F2.8</td> </tr><tr><td>32795</td><td>= Sony FE 24-70mm F4 ZA OSS</td> </tr><tr><td>32796</td><td>= Sony FE 85mm F1.8 or Viltrox PFU RBMH 85mm F1.8</td> </tr><tr><td>32796.1</td><td>= Viltrox PFU RBMH 85mm F1.8</td> @@ -4848,6 +4850,7 @@ multi-frame noise reduction)</span></span></td></tr> </tr><tr><td>50999</td><td>= Voigtlander COLOR-SKOPAR 21mm F3.5 Aspherical</td> </tr><tr><td>51000</td><td>= Voigtlander NOKTON 50mm F1.2 Aspherical</td> </tr><tr><td>51001</td><td>= Voigtlander NOKTON 21mm F1.4 Aspherical</td> +</tr><tr><td>51504</td><td>= Samyang AF 50mm F1.4</td> </tr><tr><td>51505</td><td>= Samyang AF 14mm F2.8 or Samyang AF 35mm F2.8</td> </tr><tr><td>51505.1</td><td>= Samyang AF 35mm F2.8</td> </tr><tr><td>51507</td><td>= Samyang AF 35mm F1.4</td> @@ -5110,7 +5113,8 @@ rotation -- the width is always the longer dimension.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr> <td class=r title='4396 = 0x112c'>4396</td> @@ -5499,7 +5503,8 @@ option is used.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr class=b> <td class=r title='4396 = 0x112c'>4396</td> @@ -5722,7 +5727,8 @@ option is used.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr> <td class=r title='4360 = 0x1108'>4360</td> @@ -5936,7 +5942,8 @@ not valid for panorama images.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr class=b> <td class=r title='4484 = 0x1184'>4484</td> @@ -6144,7 +6151,8 @@ for panorama images.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr> <td class=r title='4448 = 0x1160'>4448</td> @@ -6408,7 +6416,8 @@ for panorama images.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr> <td class=r title='4120 = 0x1018'>4120</td> @@ -6617,7 +6626,8 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr class=b> <td class=r title='528 = 0x210'>528</td> @@ -6872,7 +6882,8 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr class=b> <td class=r title='528 = 0x210'>528</td> @@ -7131,7 +7142,8 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.</p> <br>2 = Bracketing <br>4 = Continuous - Burst <br>5 = Continuous - Speed/Advance Priority - <br>6 = Normal - Self-timer</td></tr></table> + <br>6 = Normal - Self-timer + <br>9 = Single Burst Shooting</td></tr></table> </td></tr> <tr class=b> <td class=r title='520 = 0x208'>520</td> @@ -8214,6 +8226,7 @@ WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/5000/5100/6000/6300/6400/ <br>4 = 4 shots <br>5 = 5 shots <br>6 = 6 shots + <br>7 = 7 shots <br>9 = 9 shots <br>10 = 10 shots <br>12 = 12 shots @@ -8235,6 +8248,7 @@ WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/5000/5100/6000/6300/6400/ <br>2 = 2 files <br>3 = 3 files</td><td> </td> <td>5 = 5 files + <br>7 = 7 files <br>9 = 9 files <br>10 = 10 files</td></tr></table> </td></tr> @@ -8711,46 +8725,51 @@ RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/WX220/WX350, ILCE-7/ <td class=c>int16s[16]</td> <td> </td></tr> <tr> +<td class=r title='846 = 0x34e'>846</td> +<td>LensZoomPosition</td> +<td class=c>int16u</td> +<td> </td></tr> +<tr class=b> <td class=r title='848 = 0x350'>848</td> <td>VignettingCorrParams</td> <td class=c>int16s[16]</td> <td> </td></tr> -<tr class=b> +<tr> <td class=r title='858 = 0x35a'>858</td> <td>LensZoomPosition</td> <td class=c>int16u</td> <td> </td></tr> -<tr> +<tr class=b> <td class=r title='860 = 0x35c'>860</td> <td>VignettingCorrParams</td> <td class=c>int16s[16]</td> <td> </td></tr> -<tr class=b> +<tr> <td class=r title='872 = 0x368'>872</td> <td>VignettingCorrParams</td> <td class=c>int16s[16]</td> <td> </td></tr> -<tr> +<tr class=b> <td class=r title='892 = 0x37c'>892</td> <td>ChromaticAberrationCorrParams</td> <td class=c>int16s[32]</td> <td> </td></tr> -<tr class=b> +<tr> <td class=r title='900 = 0x384'>900</td> <td>ChromaticAberrationCorrParams</td> <td class=c>int16s[32]</td> <td> </td></tr> -<tr> +<tr class=b> <td class=r title='924 = 0x39c'>924</td> <td>ChromaticAberrationCorrParams</td> <td class=c>int16s[32]</td> <td> </td></tr> -<tr class=b> +<tr> <td class=r title='944 = 0x3b0'>944</td> <td>ChromaticAberrationCorrParams</td> <td class=c>int16s[32]</td> <td> </td></tr> -<tr> +<tr class=b> <td class=r title='952 = 0x3b8'>952</td> <td>ChromaticAberrationCorrParams</td> <td class=c>int16s[32]</td> @@ -11196,7 +11215,7 @@ some models when the <a href="../ExifTool.html#ExtractEmbedded">ExtractEmbedded< <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) -<br><i>Last revised Jul 19, 2019</i> +<br><i>Last revised Aug 6, 2019</i> <p class=lf><a href='index.html'><-- ExifTool Tag Names</a></p> </body> </html> diff --git a/html/TagNames/index.html b/html/TagNames/index.html index fde4c05d..9bc82ff6 100644 --- a/html/TagNames/index.html +++ b/html/TagNames/index.html @@ -10,7 +10,7 @@ <h2 class=top>ExifTool Tag Names</h2> <p> The tables listed below give the names of all tags recognized by ExifTool. -They contain a total of 22992 tags, with 15044 unique tag names. +They contain a total of 22996 tags, with 15044 unique tag names. </p> <blockquote> <table width='100%' class=frame><tr><td> @@ -226,7 +226,7 @@ ExifTool. A big thanks to everyone who has helped with this so far!)</i> <hr> (This document generated automatically by Image::ExifTool::BuildTagLookup) <br><i>Created Feb 15, 2005</i> -<br><i>Last revised Jul 17, 2019</i> +<br><i>Last revised Aug 6, 2019</i> <p class=lf><a href='../index.html'><-- Back to ExifTool home page</a></p> </body> </html> diff --git a/html/commentary.html b/html/commentary.html index d9509ddc..8e72463e 100644 --- a/html/commentary.html +++ b/html/commentary.html @@ -169,7 +169,10 @@ This was a huge mistake, and as a work-around software (eg. ImageMagick) must encode binary information in ASCII-hex, then compress it to offset the increase in size, and store it as a compressed text block. This adds unnecessary complexity, greatly slows down processing, and makes it much -harder to develop software which supports PNG meta information.</p> +harder to develop software which supports PNG meta information. +<i class=lt>[July 2017: PNG adopts eXIf chunk to allow EXIF metadata to be +stored in native binary format. This is useful, but still doesn't allow storage +of arbitrary binary metadata.]</i></p> <a name='PICT'></a> <h3>PICT</h3> @@ -320,7 +323,7 @@ offers a number of other features:</p> <hr> <i>Created Nov. 15, 2005</i><br> -<i>Last revised May. 2, 2019</i> +<i>Last revised July 31, 2019</i> <p class='lf'><a href="index.html"><-- Back to ExifTool home page</a></p> </body> </html> diff --git a/html/exiftool_pod.html b/html/exiftool_pod.html index 1094d7a0..123c07d7 100644 --- a/html/exiftool_pod.html +++ b/html/exiftool_pod.html @@ -663,7 +663,7 @@ <p>produces output like this:</p> -<pre><code> -- Generated by ExifTool 11.57 -- +<pre><code> -- Generated by ExifTool 11.61 -- File: a.jpg - 2003:10:31 15:44:19 (f/5.6, 1/60s, ISO 100) File: b.jpg - 2006:05:23 11:57:38 diff --git a/html/faq.html b/html/faq.html index 9a351ab2..6203a864 100644 --- a/html/faq.html +++ b/html/faq.html @@ -1336,9 +1336,9 @@ been lost in the process</u>.</blockquote> <blockquote><b>Note</b>: ExifTool will not modify the JPEG image data, so if the image itself is corrupted (eg. if you get a message saying "Not a valid JPEG"), then ExifTool can not be used to repair the image. Also, ExifTool may not -be used like this to repair TIFF-based files -- the risk of image corruption is -too great because the image is stored in the same IFD as the metadata in these -files.</blockquote> +be used like this to repair TIFF-based files or RAW files -- the risk of image +corruption is too great because the image is stored in the same IFD as the +metadata in these files.</blockquote> <blockquote>If there are also MakerNote problems in the file, you may want to add the <code>-F</code> option to the command. See <a href='#Q15'>FAQ 15</a> diff --git a/html/geotag.html b/html/geotag.html index cb8a2997..1c1a4c59 100644 --- a/html/geotag.html +++ b/html/geotag.html @@ -482,9 +482,8 @@ extract <code>DateTimeOriginal</code> from the file. For example, if the time in the GPS display reads 19:32:21 UTC and <code>DateTimeOriginal</code> is 14:31:49, then for this image the camera clock was 32 seconds slow (assuming that the timezone of the camera clock was <span class=nr>-05:00</span>). There -are two different ways to use this time synchronization to improve your -geotagging accuracy: -</blockquote> +are various ways to use this time synchronization to improve your geotagging +accuracy:</blockquote> <blockquote>A) Use the <code>Geosync</code> tag to specify the time difference while geotagging. Using this technique the existing image timestamps will not @@ -508,7 +507,12 @@ with GPS time, then geotag using the corrected timestamps: exiftool -geotag my_gps.log C:\Images </pre> -Both examples above assume that your track log file (<code>my_gps.log</code>) +C) Do both in the same command: + +<pre>exiftool -alldates+=00:00:32 -geosync=+00:00:32 -geotag my_gps.log C:\Images +</pre> + +The examples above assume that your track log file (<code>my_gps.log</code>) is in the current directory, that the images were downloaded to the <code>C:\Images</code> directory, and that the computer and camera clocks are in the same timezone.</blockquote> @@ -681,7 +685,7 @@ forum post</a> for more useful tips about creating KML files.</p> <hr> <i>Created Apr. 2, 2009</i><br> -<i>Last revised Mar. 4, 2019</i> +<i>Last revised Jul. 22, 2019</i> <p class='lf'><a href="index.html"><-- Back to ExifTool home page</a></p> </body> </html> diff --git a/html/history.html b/html/history.html index 2836640e..846aad0f 100644 --- a/html/history.html +++ b/html/history.html @@ -17,6 +17,73 @@ considered development releases, and are not uploaded to <a href="https://metacp <!-- Use line width of 80 --> <!-- *********************************************************************** --> +<a name='v11.61'><b>Aug. 7, 2019 - Version 11.61</b></a> +<ul> +<li>Added a new FujiFilm CropMode (thanks LibRaw) +<li>Added a couple of proprietary CustomRendered values (thanks Jeffrey Friedl) +<li>Added a new Nikon LensID and fixed a Canon LensType (thanks LibRaw) +<li>Added a new CanonModelID +<li>Decode more Sony DSC-RX100M7 tags (thanks Jos Roost) +<li>Write standard EXIF to PNG even if non-standard EXIF already exists +<li>Patched to avoid problems overriding new values when writing thumbnail and + preview images +<li>Changed a Minolta/Sony LensType (thanks LibRaw) +<li>Changed Composite GPS reference direction tags to be derived from only the + XMP-exif GPS coordinate tags (and not other XMP GPS coordinates) +<li>Reverted a PNG Validation check that was removed from 11.60 +</ul> + +<a name='v11.60'><b>July 30, 2019 - Version 11.60</b></a> +<ul> +<li>Added a few new Sigma LensType values (thanks LibRaw) +<li>Updated Sony makernote decoding for the DSC-RX100M7 (thanks Jos Roost) +<li>Various internal improvements to PNG reader/writer +<li>Fixed bug in RIFF decoder that could cause an "undefined subroutine" error + (thanks Hayo Baan) +<li>Fixed problem writing some QuickTime tags if the PREFERRED levels were + changed via the config file +<li>Install Changes: + <ul> + <li>Properly erase all temporary files after validation tests + </ul> +</ul> + +<a name='v11.59'><b>July 25, 2019 - Version 11.59</b></a> +<ul> +<li>Added a new SonyModelID (thanks LibRaw) +<li>Changed block delete to allow subsequent writing of tags from the same group + (like a group delete) +<li>Minor changes to warnings and verbose output when writing PNG images +<li>Fixed potential runtime warning on an error rewriting XMP in a PNG image +</ul> + +<a name='v11.58'><b>July 25, 2019 - Version 11.58</b></a> +<ul> +<li>Added a number of new Canon and Sony LensType values (thanks LibRaw) +<li>Decode NikonMeteringMode for the D500 +<li>Decode LensID for Nikon Z lenses +<li>Extract RawThermalImage from Parrot Bebop-Pro Thermal images +<li>Validate PNG CRC values when writing or using the Validate option +<li>Improved Russian translation (thanks Andrei Korzhyts) +<li>Improved identification of some Tamron lenses for Canon cameras +<li>Changed name of D810MeteringMode tag to NikonMeteringMode +<li>Patched writing of XMP in PNG images to always come before IDAT, and warn if + XMP comes after IDAT when reading +<li>Fixed problem replacing multiple lang-alt default-language structure + elements in lists of XMP structures (behaviour for other languages still not + ideal) +<li>API Changes: + <ul> + <li>Removed PNGEarlyXMP option + <li>Fixed problem introduced in 11.54 which caused Options('UserParam') to + return undef + </ul> +<li>Internal Changes: + <ul> + <li>A block delete of EXIF, XMP, IPTC, etc now sets the group delete flag + </ul> +</ul> + <a name='v11.57'><b>July 19, 2019 - Version 11.57</b></a> <ul> <li>Improved decoding of some tags for the Sony ILCE-7RM4 (thanks Jos Roost) diff --git a/html/index.html b/html/index.html index 0077dff8..49b92dea 100644 --- a/html/index.html +++ b/html/index.html @@ -74,9 +74,9 @@ span.sup { font-size: 0.8em; font-weight: normal; position: relative; top </div> <blockquote><table class='dl lg'><tr><td><b> -<a href="Image-ExifTool-11.57.tar.gz"> -Download Version 11.57</a> (4.4 MB) - -<a href="history.html">July 19, 2019</a></b></td></tr></table></blockquote> +<a href="Image-ExifTool-11.61.tar.gz"> +Download Version 11.61</a> (4.4 MB) - +<a href="history.html">Aug. 7, 2019</a></b></td></tr></table></blockquote> <p><b>ExifTool is a platform-independent <a href="ExifTool.html">Perl library</a> plus a <a href="exiftool_pod.html">command-line application</a> for @@ -128,8 +128,8 @@ distribution above.)</i></p> <blockquote><table class='dl lg'><tr><td><b> <a name="alone">Windows Executable:</a> -<a href="exiftool-11.57.zip"> - exiftool-11.57.zip</a> (6.1 MB)</b></td></tr></table></blockquote> +<a href="exiftool-11.61.zip"> + exiftool-11.61.zip</a> (6.1 MB)</b></td></tr></table></blockquote> <p><b>The stand-alone Windows executable</b> does not require Perl. Just download and un-zip the archive then double-click on @@ -140,8 +140,8 @@ of Windows.</p> <blockquote><table class='dl lg'><tr><td><b> MacOS Package: -<a href="ExifTool-11.57.dmg"> - ExifTool-11.57.dmg</a> (2.8 MB)</b></td></tr></table></blockquote> +<a href="ExifTool-11.61.dmg"> + ExifTool-11.61.dmg</a> (2.8 MB)</b></td></tr></table></blockquote> <p><b>The MacOS package</b> installs the ExifTool command-line application and libraries in /usr/local/bin. After installing, type "<code>exiftool</code>" in @@ -467,6 +467,7 @@ of meta information in JPEG images:</p> <tr><td>APP1 - <a href="TagNames/XMP.html">XMP</a></td><td>R/W/C</td><td>Extensible Metadata Platform (multi-segment)</td></tr> <tr><td>APP1 - <a href="TagNames/Casio.html#QVCI">QVCI</a></td><td>R</td><td>Casio QV-7000SX QVCI information</td></tr> <tr><td>APP1 - <a href="TagNames/FLIR.html#FFF">FLIR</a></td><td>R</td><td>FLIR thermal imaging data (multi-segment)</td></tr> +<tr><td>APP1 - RawThermalImage</td><td>R</td><td>Thermal image from Parrot Bebop-Pro Thermal drone</td></tr> <tr><td>APP2 - <a href="TagNames/ICC_Profile.html">ICC</a></td><td>R/W/C</td><td>International Color Consortium (multi-segment)</td></tr> <tr><td>APP2 - <a href="TagNames/FlashPix.html">FPXR</a></td><td>R</td><td>FlashPix Ready (multi-segment)</td></tr> <tr><td>APP2 - <a href="TagNames/MPF.html">MPF</a></td><td>R</td><td>Multi-Picture Format</td></tr> @@ -979,9 +980,9 @@ CC (version 14.0) <b>ignore XMP in PNG images</b> if it comes after the image data, which is where ExifTool adds new XMP. This should be considered as a bug in the Apple and Adobe software since XMP is allowed to exist after the image data according to the XMP and PNG specifications. <i class=grn>[ExifTool 9.40 -provides the <a href="ExifTool.html#PNGEarlyXMP">PNGEarlyXMP API option</a> to -allow writing XMP before the IDAT chunk, but there are caveats associated with -its use]</i></li> +provides the PNGEarlyXMP API option to allow writing XMP before the IDAT chunk, +but there are caveats associated with its use. ExifTool 11.58 and later remove +this option and always write XMP before IDAT.]</i></li> <li><span class=red>[2013-04-21]</span> Memory available to ExifTool in the <b>Windows EXE version</b> is limited to a few hundred MB. This limitation has been known to cause <b>unreasonably long diff --git a/html/install.html b/html/install.html index c840c712..6331dd85 100644 --- a/html/install.html +++ b/html/install.html @@ -52,10 +52,10 @@ documentation or some other files of the full distribution.</p> <h3>Stand-Alone Executable</h3> <ol> <li><b>Download</b> the <b>Windows Executable</b> from the <a href="index.html">ExifTool home page</a>. -<br><span class=lt>(The file you download should be named "<code>exiftool-11.57.zip</code>".)</span></li> +<br><span class=lt>(The file you download should be named "<code>exiftool-11.61.zip</code>".)</span></li> <li><b>Extract "<code>exiftool(-k).exe</code>"</b> from the "<code>.zip</code>" file, and place it <b>on your Desktop</b>. -<br><span class=lt>(Double-click on "<code>exiftool-11.57.zip</code>" to open +<br><span class=lt>(Double-click on "<code>exiftool-11.61.zip</code>" to open the archive, then drag "<code>exiftool(-k).exe</code>" to your Desktop.)</span></li> </ol> <p>You can now double-click on "<code>exiftool(-k).exe</code>" to read the @@ -107,7 +107,7 @@ can be downloaded from <a href="http://www.activestate.com/activeperl/">activeperl.com</a>.)</p> <ol> <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a> -<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-11.57.tar.gz</code>".)</span></li> +<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-11.61.tar.gz</code>".)</span></li> <li><b>Extract the ExifTool files</b> from the archive. <br><span class=lt>(The archive is a gzipped tar file, and can be opened with various Windows utilities, including WinZip.)</span></li> @@ -149,7 +149,7 @@ in the OS X package. Both versions run natively on PPC and Intel Macs.</p> <h3>OS X Package</h3> <ol> <li><b>Download</b> the <b>ExifTool OS X Package</b> from the <a href="index.html">ExifTool home page</a>. -<br><span class=lt>(The file you download should be named "<code>ExifTool-11.57.dmg</code>".)</span></li> +<br><span class=lt>(The file you download should be named "<code>ExifTool-11.61.dmg</code>".)</span></li> <li><b>Install</b> as a normal <b>OS X package</b>. <br><span class=lt>(Open the disk image, double-click on the install package, and follow the instructions.) </span></li> @@ -164,12 +164,12 @@ in the OS X package. Both versions run natively on PPC and Intel Macs.</p> <ol> <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a> to your Desktop. -<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-11.57.tar.gz</code>".)</span></li> +<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-11.61.tar.gz</code>".)</span></li> <li><b>Launch</b> the <b>Terminal</b> application from the Utilities folder in your Applications folder.</li> <li>In the Terminal window, <b>type the following</b>: <pre class='code'> cd ~/Desktop - tar -xzf Image-ExifTool-11.57.tar.gz - cd Image-ExifTool-11.57 + tar -xzf Image-ExifTool-11.61.tar.gz + cd Image-ExifTool-11.61 sudo cp -r exiftool lib /usr/local/bin </pre> <span class=lt>(Note: The last step above will require you to enter your @@ -185,7 +185,7 @@ your Perl version. If both sets of libraries exist, /usr/local/bin/lib takes precedence for exiftool, but /Library/Perl/#.#.# is the default for any other Perl scripts.</li> <li>In OS X 10.8 or later, you may see this message when you try to open the install package: -<blockquote class=red>"ExifTool-11.57.pkg" can't be opened because it is from an +<blockquote class=red>"ExifTool-11.61.pkg" can't be opened because it is from an unidentified developer.</blockquote> The solution is to control-click on the pkg then select "Open" from the pop-up menu instead of just double-clicking. An alternative is to lower the security settings by changing "Allow applications downloaded from" to @@ -211,11 +211,11 @@ have the wrong "<code>lib</code>" folder.</li> <ol> <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a> -<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-11.57.tar.gz</code>".)</span></li> +<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-11.61.tar.gz</code>".)</span></li> <li><b>Unpack the distribution</b> and <b>make it your current directory</b> by typing: <pre class='code'> cd <i><your download directory></i> - gzip -dc Image-ExifTool-11.57.tar.gz | tar -xf - - cd Image-ExifTool-11.57 + gzip -dc Image-ExifTool-11.61.tar.gz | tar -xf - + cd Image-ExifTool-11.61 </pre> <span class=lt>(At this point you may run exiftool by typing "<code>./exiftool <i><image file name></i></code>".)</span></li> diff --git a/html/metafiles.html b/html/metafiles.html index c47359cc..e4693e61 100644 --- a/html/metafiles.html +++ b/html/metafiles.html @@ -102,6 +102,8 @@ source files or entire directories.</p> copied by this command, and the 2 kB of padding recommended by the XMP specification is not added when copying as a block)</p> <pre>exiftool -tagsfromfile <i>SRC</i>.xmp -xmp <i>DST</i>.jpg</pre> +<p class=b>or equivalently</p> +<pre>exiftool "-xmp<=<i>SRC</i>.xmp" <i>DST</i>.jpg</pre> <h4>Batch Processing</h4> @@ -236,12 +238,11 @@ original locations in an image.</p> <a name="exif"></a> <h3>EXIF Files</h3> -<p>EXIF files store EXIF information in the same format as in the APP1 segment -of a JPEG image (<i>with the exception that there is no size limit for an -EXIF file, while EXIF data in a JPEG image is limited to a maximum of 65527 -bytes</i>). The three commands below illustrate techniques for copying the -entire EXIF block from a source image (<code><i>SRCFILE</i></code>) to an -output EXIF file (<code>out.exif</code>):</p> +<p>EXIF files store EXIF information in the same TIFF-based format as the EXIF +APP1 segment of a JPEG image, but without the "Exif\0\0" header. The three +commands below illustrate techniques for copying the entire EXIF block from a +source image (<code><i>SRCFILE</i></code>) to an output EXIF file +(<code>out.exif</code>):</p> <pre>exiftool -exif -b <i>SRCFILE</i> > out.exif @@ -249,11 +250,11 @@ exiftool -tagsfromfile <i>SRCFILE</i> -exif out.exif exiftool -o out.exif -exif <i>SRCFILE</i></pre> -<p>It is the specification of the <a href="TagNames/Extra.html">Extra</a> EXIF -tag in each of the above commands (the "<code>-exif</code>" argument) that -causes the EXIF information to be extracted as a block. JPEG, PNG, JP2, MIE and -MIFF files all support storage of EXIF data blocks in this format, although -exiftool does not currently write MIFF images.</p> +<p>The <a href="TagNames/Extra.html">Extra</a> EXIF tag used in each of the +above commands (the "<code>-exif</code>" argument) represents the EXIF metadata +in the form of a binary data block. JPEG, PNG, JP2, MIE and MIFF files all +support storage of EXIF data blocks in this format, although exiftool does not +currently write MIFF images.</p> <p>Tags may also be copied individually to and from an EXIF file, but remember that this will not copy "unsafe" tags unless they are specified explicitly. The @@ -316,7 +317,7 @@ etc.). ExifTool has full read, write and create support for this format.</p> <hr> <i>Created Nov 12, 2008</i><br> -<i>Last revised Sept 3, 2015</i> +<i>Last revised July 31, 2019</i> <p class='lf'><a href="index.html"><-- Back to ExifTool home page</a></p> </body> </html> diff --git a/html/struct.html b/html/struct.html index 4eb5e42d..6a13ed8f 100644 --- a/html/struct.html +++ b/html/struct.html @@ -292,7 +292,7 @@ added after the last field in a structure.</li> <pre class=code>exiftool "-RegionInfo<=INFILE" a.xmp</pre> </td></tr></table></blockquote> -<p>the INFILE below writes structured information to XMP-mwg-rs:RegionInfo.</p> +<p>and the INFILE below, structured information is written to XMP-mwg-rs:RegionInfo.</p> <blockquote><table class='box'><tr><td> <pre>{ diff --git a/lib/Image/ExifTool.pm b/lib/Image/ExifTool.pm index 609a4173..13fc162a 100644 --- a/lib/Image/ExifTool.pm +++ b/lib/Image/ExifTool.pm @@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd %jpegMarker %specialTags %fileTypeLookup); -$VERSION = '11.57'; +$VERSION = '11.61'; $RELEASE = ''; @ISA = qw(Exporter); %EXPORT_TAGS = ( @@ -1378,7 +1378,7 @@ my %systemTagsNotes = ( is generated only if specifically requested }, Groups => { 0 => 'EXIF', 1 => 'EXIF' }, - Flags => ['Writable' ,'Protected', 'Binary'], + Flags => ['Writable' ,'Protected', 'Binary', 'DelGroup'], WriteCheck => q{ return undef if $val =~ /^(II\x2a\0|MM\0\x2a)/; return 'Invalid EXIF data'; @@ -1390,7 +1390,7 @@ my %systemTagsNotes = ( requested }, Groups => { 0 => 'IPTC', 1 => 'IPTC' }, - Flags => ['Writable', 'Protected', 'Binary'], + Flags => ['Writable', 'Protected', 'Binary', 'DelGroup'], Priority => 0, # so main IPTC (which hopefully comes first) takes priority WriteCheck => q{ return undef if $val =~ /^(\x1c|\0+$)/; @@ -1403,7 +1403,7 @@ my %systemTagsNotes = ( into multiple blocks. This tag is generated only if specifically requested }, Groups => { 0 => 'XMP', 1 => 'XMP' }, - Flags => ['Writable', 'Protected', 'Binary'], + Flags => ['Writable', 'Protected', 'Binary', 'DelGroup'], Priority => 0, # so main xmp (which usually comes first) takes priority WriteCheck => q{ require Image::ExifTool::XMP; @@ -1416,7 +1416,7 @@ my %systemTagsNotes = ( requested }, Groups => { 0 => 'ICC_Profile', 1 => 'ICC_Profile' }, - Flags => ['Writable' ,'Protected', 'Binary'], + Flags => ['Writable' ,'Protected', 'Binary', 'DelGroup'], WriteCheck => q{ require Image::ExifTool::ICC_Profile; return Image::ExifTool::ICC_Profile::ValidateICC(\$val); @@ -1428,7 +1428,7 @@ my %systemTagsNotes = ( specifically requested }, Groups => { 0 => 'CanonVRD', 1 => 'CanonVRD' }, - Flags => ['Writable' ,'Protected', 'Binary'], + Flags => ['Writable' ,'Protected', 'Binary', 'DelGroup'], Permanent => 0, # (this is 1 by default for MakerNotes tags) WriteCheck => q{ return undef if $val =~ /^CANON OPTIONAL DATA\0/; @@ -1973,8 +1973,10 @@ sub Options($$;@) } } $oldVal = $$options{$param}; - # get previous Compact/XMPShorthand setting - $oldVal = $$oldVal{$param} if ref $oldVal eq 'HASH'; + if (ref $oldVal eq 'HASH' and ($param eq 'Compact' or $param eq 'XMPShorthand')) { + # get previous Compact/XMPShorthand setting + $oldVal = $$oldVal{$param}; + } last unless @_; my $newVal = shift; if ($param eq 'Lang') { @@ -2187,7 +2189,6 @@ sub ClearOptions($) MissingTagValue =>undef,# value for missing tags when expanded in expressions NoPDFList => undef, # flag to avoid splitting PDF List-type tag values Password => undef, # password for password-protected PDF documents - PNGEarlyXMP => undef, # write XMP in PNG images before IDAT chunk PrintConv => 1, # flag to enable print conversion QuickTimeHandler => undef, # flag to add mdir Handler to newly created Meta box QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC @@ -6245,7 +6246,7 @@ sub ProcessJPEG($$) DirStart(\%dirInfo, 4); $self->ProcessDirectory(\%dirInfo, $tagTablePtr); } - } elsif ($marker == 0xe1) { # APP1 (EXIF, XMP, QVCI) + } elsif ($marker == 0xe1) { # APP1 (EXIF, XMP, QVCI, PARROT) # (some Kodak cameras don't put a second "\0", and I have seen an # example where there was a second 4-byte APP1 segment header) if ($$segDataPt =~ /^(.{0,4})Exif\0/is) { @@ -6389,6 +6390,11 @@ sub ProcessJPEG($$) } else { $self->WarnOnce('Invalid or extraneous FLIR chunk(s)'); } + } elsif ($$segDataPt =~ /^PARROT\0(II\x2a\0|MM\0\x2a)/) { + # (don't know if this could span multiple segments) + my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main'); + $self->HandleTag($tagTablePtr, 'APP1', $$segDataPt); + $dumpType = 'Parrot'; } else { # Hmmm. Could be XMP, let's see my $processed; diff --git a/lib/Image/ExifTool.pod b/lib/Image/ExifTool.pod index caad6b44..63620682 100644 --- a/lib/Image/ExifTool.pod +++ b/lib/Image/ExifTool.pod @@ -809,23 +809,6 @@ Password for reading/writing password-protected PDF documents. Ignored if a password is not required. Character encoding of the password is determined by the value of the Charset option at processing time. Default is undef. -=item PNGEarlyXMP - -Flag to write XMP in PNG images before the IDAT (image data) chunk. By -default, ExifTool adds new XMP to the end of a PNG file (just before IEND). -This is allowed by the PNG and XMP specifications, but some utilities seem -to ignore XMP if it comes after the image data. The PNGEarlyXMP option -causes ExifTool to instead add new XMP before the PNG IDAT chunk. However, -since ExifTool uses a single-pass writing algorithm, it has no way to tell -if XMP already exists later in the file before writing the new XMP in this -location. If this happens, a minor error is issued when the extra XMP is -encountered, and the file is not written. Adding the L</IgnoreMinorErrors> -option causes the XMP after IDAT to be deleted, thus resolving the conflict -(at the expense of possible metadata loss), and allowing the file to be -written. The PNGEarlyXMP option is applied automatically when deleting all -XMP and writing new XMP back in one step. When reading, this option causes -a warning to be issued if standard XMP is found after the IDAT chunk. - =item PrintConv Flag to enable automatic print conversion. Also enables inverse @@ -1057,9 +1040,9 @@ Binary, Charset, CharsetEXIF, CharsetFileName, CharsetID3, CharsetIPTC, CharsetPhotoshop, CharsetQuickTime, CharsetRIFF, Composite, ExtendedXMP, ExtractEmbedded, FastScan, FixBase, HtmlDump, HtmlDumpBase, IgnoreMinorErrors, Lang, LargeFileSupport, MakerNotes, MDItemTags, -NoPDFList, Password, PNGEarlyXMP, QuickTimeUTC (enforced 1904 time zero), -RequestAll, RequestTags, ScanForXMP, Struct, TextOut, Unknown, Verbose, -XAttrTags and XMPAutoConv. +NoPDFList, Password, QuickTimeUTC (enforced 1904 time zero), RequestAll, +RequestTags, ScanForXMP, Struct, TextOut, Unknown, Verbose, XAttrTags and +XMPAutoConv. =item Return Value: @@ -1190,8 +1173,8 @@ called with a source file name. The following ExifTool options are effective in the call to L</WriteInfo>: ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact, -Compress, FixBase, IgnoreMinorErrors, Password, PNGEarlyXMP, -QuickTimeHandler, Verbose and WriteMode. +Compress, FixBase, IgnoreMinorErrors, Password, QuickTimeHandler, Verbose +and WriteMode. =head2 GetTagList diff --git a/lib/Image/ExifTool/Canon.pm b/lib/Image/ExifTool/Canon.pm index 453d72d2..69984d44 100644 --- a/lib/Image/ExifTool/Canon.pm +++ b/lib/Image/ExifTool/Canon.pm @@ -88,7 +88,7 @@ sub ProcessCTMD($$$); sub ProcessExifInfo($$$); sub SwapWords($); -$VERSION = '4.18'; +$VERSION = '4.20'; # Note: Removed 'USM' from 'L' lenses since it is redundant - PH # (or is it? Ref 32 shows 5 non-USM L-type lenses) @@ -213,6 +213,7 @@ $VERSION = '4.18'; 103 => 'Samyang AF 14mm f/2.8 EF or Rokinon Lens', #IB 103.1 => 'Rokinon SP 14mm f/2.4', #IB 103.2 => 'Rokinon AF 14mm f/2.8 EF', #IB + 106 => 'Rokinon SP / Samyang XP 35mm f/1.2', #IB 124 => 'Canon MP-E 65mm f/2.8 1-5x Macro Photo', #9 125 => 'Canon TS-E 24mm f/3.5L', 126 => 'Canon TS-E 45mm f/2.8', #15 @@ -268,6 +269,7 @@ $VERSION = '4.18'; 150.2 => 'Sigma 30mm f/1.4 DC HSM', #15 150.3 => 'Sigma 24mm f/1.8 DG Macro EX', #15 150.4 => 'Sigma 28mm f/1.8 DG Macro EX', #IB + 150.5 => 'Sigma 18-35mm f/1.8 DC HSM | A', #IB 151 => 'Canon EF 200mm f/2.8L USM', 152 => 'Canon EF 300mm f/4L IS USM or Sigma Lens', #15 152.1 => 'Sigma 12-24mm f/4.5-5.6 EX DG ASPHERICAL HSM', #15 @@ -281,7 +283,8 @@ $VERSION = '4.18'; 153.4 => 'Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro', #PH 154 => 'Canon EF 20mm f/2.8 USM or Zeiss Lens', #15 154.1 => 'Zeiss Milvus 21mm f/2.8', #IB - 155 => 'Canon EF 85mm f/1.8 USM', + 155 => 'Canon EF 85mm f/1.8 USM or Sigma Lens', + 155.1 => 'Sigma 14mm f/1.8 DG HSM | A', #IB (A017) 156 => 'Canon EF 28-105mm f/3.5-4.5 USM or Tamron Lens', 156.1 => 'Tamron SP 70-300mm f/4-5.6 Di VC USD', #PH (model A005) 156.2 => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF', #JR (Model 176D) @@ -344,6 +347,7 @@ $VERSION = '4.18'; 180.7 => 'Sigma 50mm f/1.5 FF High-Speed Prime | 017', #IB 180.8 => 'Sigma 85mm f/1.5 FF High-Speed Prime | 017', #IB 180.9 => 'Tokina Opera 50mm f/1.4 FF', #IB + '180.10' => 'Sigma 20mm f/1.4 DG HSM | A', #IB (015) 181 => 'Canon EF 100-400mm f/4.5-5.6L IS USM + 1.4x or Sigma Lens', #15 181.1 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | S + 1.4x', #50 182 => 'Canon EF 100-400mm f/4.5-5.6L IS USM + 2x or Sigma Lens', @@ -446,6 +450,7 @@ $VERSION = '4.18'; 368.4 => 'Sigma 60-600mm f/4.5-6.3 DG OS HSM | S', #IB (018) 368.5 => 'Sigma 28mm f/1.4 DG HSM | A', #IB (A019) 368.6 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | S', #50 + 368.7 => 'Sigma 85mm f/1.4 DG HSM | A', #IB (016) # Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings 488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH 489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek @@ -506,7 +511,7 @@ $VERSION = '4.18'; 4154 => 'Canon EF-S 24mm f/2.8 STM', #IB 4155 => 'Canon EF-M 28mm f/3.5 Macro IS STM', #42 4156 => 'Canon EF 50mm f/1.8 STM', #42 - 4157 => 'Canon EF-M 18-150mm 1:3.5-6.3 IS STM', #42 + 4157 => 'Canon EF-M 18-150mm f/3.5-6.3 IS STM', #42 4158 => 'Canon EF-S 18-55mm f/4-5.6 IS STM', #PH 4159 => 'Canon EF-M 32mm f/1.4 STM', #42 4160 => 'Canon EF-S 35mm f/2.8 Macro IS STM', #42 @@ -524,6 +529,7 @@ $VERSION = '4.18'; 61182.1 => 'Canon RF 50mm F1.2 L USM', #IB 61182.2 => 'Canon RF 24-105mm F4 L IS USM', #IB 61182.3 => 'Canon RF 28-70mm F2 L USM', #IB + 61182.4 => 'Canon RF 85mm F1.2L USM', #IB 65535 => 'n/a', ); @@ -768,6 +774,7 @@ $VERSION = '4.18'; 0x4180000 => 'PowerShot G1 X Mark III', #IB 0x6040000 => 'PowerShot S100 / Digital IXUS / IXY Digital', 0x801 => 'PowerShot SX740 HS', + 0x804 => 'PowerShot G5 X Mark II', 0x805 => 'PowerShot SX70 HS', 0x808 => 'PowerShot G7 X Mark III', @@ -8422,6 +8429,7 @@ my %filterConv = ( }, # CTBO - (CR3 files) int32u entry count N, N x (int32u index, int64u offset, int64u size) # index: 1=XMP, 2=PRVW, 3=mdat, 4=?, 5=? + # --> ignored when reading, but offsets are updated when writing CMT1 => { # (CR3 files) Name => 'IFD0', SubDirectory => { diff --git a/lib/Image/ExifTool/Exif.pm b/lib/Image/ExifTool/Exif.pm index 603f06a2..6fd06737 100644 --- a/lib/Image/ExifTool/Exif.pm +++ b/lib/Image/ExifTool/Exif.pm @@ -42,6 +42,7 @@ # 29) http://www.libtiff.org # 30) http://geotiff.maptools.org/spec/geotiffhome.html # 31) https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_tag_codes.h +# 32) Jeffry Friedl private communication # IB) Iliah Borg private communication (LibRaw) # JD) Jens Duttke private communication #------------------------------------------------------------------------------ @@ -55,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::MakerNotes; -$VERSION = '4.19'; +$VERSION = '4.21'; sub ProcessExif($$$); sub WriteExif($$$); @@ -2552,11 +2553,11 @@ my %sampleFormat = ( PrintConv => { 0 => 'Normal', 1 => 'Custom', - # 2 - also seen (Apple iOS) - 3 => 'HDR', # non-standard (Apple iOS) - # 4 - also seen (Apple iOS) - normal image from iOS Camera app (ref http://regex.info/blog/lightroom-goodies/metadata-presets) + 2 => 'HDR (no original saved)', #32 non-standard (Apple iOS) + 3 => 'HDR (original saved)', #32 non-standard (Apple iOS) + 4 => 'Original (for HDR)', #32 non-standard (Apple iOS) 6 => 'Panorama', # non-standard (Apple iOS, horizontal or vertical) - # 7 - also seen (Apple iOS) + 7 => 'Portrait HDR', #32 non-standard (Apple iOS) 8 => 'Portrait', # non-standard (Apple iOS, blurred background) # 9 - also seen (Apple iOS) (HDR Portrait?) }, @@ -5243,7 +5244,8 @@ sub PrintLensID($$@) $lensTypePrt = $$printConv{$lensType} if $$printConv{$lensType}; } } - } elsif ($shortFocal and $longFocal) { + # (Min/MaxFocalLength may report the current focal length for Tamron zoom lenses) + } elsif ($shortFocal and $longFocal and (not $lensModel or $lensModel !~ /^TAMRON.*-\d+mm/)) { # Canon (and some other makes) include makernote information # which allows better lens identification require Image::ExifTool::Canon; diff --git a/lib/Image/ExifTool/FujiFilm.pm b/lib/Image/ExifTool/FujiFilm.pm index 9f8379c6..289ad5c6 100644 --- a/lib/Image/ExifTool/FujiFilm.pm +++ b/lib/Image/ExifTool/FujiFilm.pm @@ -30,7 +30,7 @@ use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::Exif; -$VERSION = '1.72'; +$VERSION = '1.73'; sub ProcessFujiDir($$$); sub ProcessFaceRec($$$); @@ -453,8 +453,9 @@ my %faceCategories = ( 0x104d => { #forum9634 Name => 'CropMode', Writable => 'int16u', - PrintConv => { + PrintConv => { # (perhaps this is a bit mask?) 0 => 'n/a', + 1 => 'Full-frame on GFX', #IB 2 => 'Sports Finder Mode', # (mechanical shutter) 4 => 'Electronic Shutter 1.25x Crop', # (continuous high) }, diff --git a/lib/Image/ExifTool/JPEG.pm b/lib/Image/ExifTool/JPEG.pm index 1e8d9afd..1ca594d4 100644 --- a/lib/Image/ExifTool/JPEG.pm +++ b/lib/Image/ExifTool/JPEG.pm @@ -11,7 +11,7 @@ use strict; use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.28'; +$VERSION = '1.29'; sub ProcessOcad($$$); sub ProcessJPEG_HDR($$$); @@ -63,6 +63,13 @@ sub ProcessJPEG_HDR($$$); Name => 'FLIR', Condition => '$$valPt =~ /^FLIR\0/', SubDirectory => { TagTable => 'Image::ExifTool::FLIR::FFF' }, + }, { + Name => 'RawThermalImage', # (from Parrot Bebop-Pro Thermal drone) + Condition => '$$valPt =~ /^PARROT\0(II\x2a\0|MM\0\x2a)/', + Groups => { 0 => 'APP1', 1 => 'Parrot', 2 => 'Preview' }, + Notes => 'thermal image from Parrot Bebop-Pro Thermal drone', + RawConv => 'substr($val, 7)', + Binary => 1, }], APP2 => [{ Name => 'ICC_Profile', diff --git a/lib/Image/ExifTool/Lang/ru.pm b/lib/Image/ExifTool/Lang/ru.pm index 83ed118d..895a856f 100644 --- a/lib/Image/ExifTool/Lang/ru.pm +++ b/lib/Image/ExifTool/Lang/ru.pm @@ -11,95 +11,95 @@ package Image::ExifTool::Lang::ru; use strict; use vars qw($VERSION); -$VERSION = '1.05'; +$VERSION = '1.06'; %Image::ExifTool::Lang::ru::Translate = ( - 'A100DataOffset' => 'Смещение данных (для Sony A100)', + 'A100DataOffset' => 'Смещение данных (Sony A100)', 'ARMIdentifier' => 'Идентификатор ARM', 'ARMVersion' => 'Версия ARM', - 'Acceleration' => 'Скорость движения', + 'Acceleration' => 'Ускорение', 'ActionAdvised' => { Description => 'Рекомендуемое действие', PrintConv => { 'Object Append' => 'Добавить объект', 'Object Kill' => 'Уничтожить объект', - 'Object Reference' => 'Сделать ссылку на объект', + 'Object Reference' => 'Ссылка на объект', 'Object Replace' => 'Заменить объект', }, }, 'ActiveArea' => 'Активная область', 'Address' => 'Адресс', - 'AdventRevision' => 'Advent - Ревизия', - 'AdventScale' => 'Advent - Масштаб', - 'AffineTransformMat' => 'Аффинное преобразование матрицы', + 'AdventRevision' => 'Проверка появления', + 'AdventScale' => 'Масштаб появления', + 'AffineTransformMat' => 'Аффинное матричное преобразование', 'Album' => 'Альбом', - 'AliasLayerMetadata' => 'Alias - Метаданные слоя', - 'AlphaByteCount' => 'Размер альфа-канала (байт)', + 'AliasLayerMetadata' => 'Псевдоним метаданных слоя', + 'AlphaByteCount' => 'Число байтов альфа-канала', 'AlphaDataDiscard' => { - Description => 'Удаленные данные из альфа-канала после сжатия', + Description => 'Отброшенные данные альфа-канала', PrintConv => { - 'Flexbits Discarded' => 'Удалены данные Flexbits', + 'Flexbits Discarded' => 'Гибкие биты отброшены', 'Full Resolution' => 'Полное разрешение', - 'HighPass Frequency Data Discarded' => 'Удалены данные о высоких частотах', - 'Highpass and LowPass Frequency Data Discarded' => 'Удалены данные о высоких и низких частотах', + 'HighPass Frequency Data Discarded' => 'Данные высоких частот отброшены', + 'Highpass and LowPass Frequency Data Discarded' => 'Данные высоких и низких частот отброшены', }, }, 'AlphaOffset' => 'Смещение альфа-канала', 'AmbientTemperature' => 'Температура окружающей среды', 'AnalogBalance' => 'Аналоговый баланс белого', - 'Annotation' => 'Аннотация', - 'AnnotationUsageRights' => 'Права на использование Аннотации', - 'Annotations' => 'Аннотации', + 'Annotation' => 'Примечание', + 'AnnotationUsageRights' => 'Право использования примечания', + 'Annotations' => 'Примечания', 'AntiAliasStrength' => 'Сила сглаживания', 'Aperture' => 'Диафрагма', - 'ApertureValue' => 'Диафрагма', - 'AppleKeywords' => 'Apple - Ключевые слова', - 'ApplicationNotes' => 'Примечания приложения', - 'ApplicationRecordVersion' => 'Версия Application Record', - 'Artist' => 'Автор', - 'AsShotICCProfile' => 'ICC профиль при съёмке', + 'ApertureValue' => 'Значение диафрагмы', + 'AppleKeywords' => 'Ключевые слова Apple', + 'ApplicationNotes' => 'Заметки приложения', + 'ApplicationRecordVersion' => 'Версия записи приложения', + 'Artist' => 'Артист', + 'AsShotICCProfile' => 'ICC-профиль при съёмке', 'AsShotNeutral' => 'Нейтральный цвет при съёмке', - 'AsShotPreProfileMatrix' => 'Pre профиль матрицы при съёмке', + 'AsShotPreProfileMatrix' => 'Предварительный профиль матрицы при съёмке', 'AsShotProfileName' => 'Имя профиля при съёмке', - 'AsShotWhiteXY' => 'Белый XY при съёмке', + 'AsShotWhiteXY' => 'XY белого при съёмке', 'AudioDuration' => 'Продолжительность аудио', - 'AudioOutcue' => 'Заключительные слова аудио', - 'AudioSamplingRate' => 'Частота дискретизации', - 'AudioSamplingResolution' => 'Разрядность аудио', + 'AudioOutcue' => 'Выходной сигнал аудио', + 'AudioSamplingRate' => 'Частота дискретизации аудио', + 'AudioSamplingResolution' => 'Разрядность дискретизации аудио', 'AudioType' => { Description => 'Тип аудио', PrintConv => { - 'Mono Actuality' => 'Моно - Актуальное', - 'Mono Music' => 'Моно - Музыка', - 'Mono Question and Answer Session' => 'Моно - Сеанс вопросов и ответов', - 'Mono Raw Sound' => 'Моно - Raw Sound', - 'Mono Response to a Question' => 'Моно - Ответ на вопрос', - 'Mono Scener' => 'Моно - Сцена', - 'Mono Voicer' => 'Моно - Голос', - 'Mono Wrap' => 'Моно - Wrap', - 'Stereo Actuality' => 'Стерео - Актуальное', - 'Stereo Music' => 'Стерео - Музыка', - 'Stereo Question and Answer Session' => 'Стерео - Сеанс вопросов и ответов', - 'Stereo Raw Sound' => 'Стерео - Raw Sound', - 'Stereo Response to a Question' => 'Стерео - Ответ на вопрос', - 'Stereo Scener' => 'Стерео - Сцена', - 'Stereo Voicer' => 'Стерео - Голос', - 'Stereo Wrap' => 'Стерео - Wrap', + 'Mono Actuality' => 'Моно — Реальность', + 'Mono Music' => 'Моно — Музыка', + 'Mono Question and Answer Session' => 'Моно — Сессия вопроса и ответа', + 'Mono Raw Sound' => 'Моно — Сырой звук', + 'Mono Response to a Question' => 'Моно — Ответ на вопрос', + 'Mono Scener' => 'Моно — Сценер', + 'Mono Voicer' => 'Моно — Рупор', + 'Mono Wrap' => 'Моно — Обёртка', + 'Stereo Actuality' => 'Стерео — Реальность', + 'Stereo Music' => 'Стерео — Музыка', + 'Stereo Question and Answer Session' => 'Стерео — Сессия вопроса и ответа', + 'Stereo Raw Sound' => 'Стерео — Сырой звук', + 'Stereo Response to a Question' => 'Стерео — Ответ на вопрос', + 'Stereo Scener' => 'Стерео — Сценер', + 'Stereo Voicer' => 'Стерео — Рупор', + 'Stereo Wrap' => 'Стерео — Обёртка', 'Text Only' => 'Только текст', }, }, - 'AuthenticationTime' => 'Электронная подпись - Время аутентификации', - 'AuthenticationType' => 'Электронная подпись - Тип аутентификации', + 'AuthenticationTime' => 'Время аутентификации', + 'AuthenticationType' => 'Тип аутентификации', 'Author' => 'Автор', 'AuthorsPosition' => 'Должность автора', 'BackgroundColorIndicator' => { Description => 'Цвет фона', PrintConv => { - 'Specified Background Color' => 'Указан', - 'Unspecified Background Color' => 'Не указан', + 'Specified Background Color' => 'Указанный цвет фона', + 'Unspecified Background Color' => 'Не указанный цвет фона', }, }, - 'BackgroundColorValue' => 'Значение фонового цвета', + 'BackgroundColorValue' => 'Значение цвета фона', 'BadFaxLines' => 'Количество битых строк', 'BaselineExposure' => 'Базовая экспозиция', 'BaselineExposureOffset' => 'Сдвиг базовой экспозиции', @@ -109,119 +109,119 @@ $VERSION = '1.05'; 'BayerGreenSplit' => 'Разделение зелёных каналов в матрице Байера', 'BestQualityScale' => 'Оптимальный масштаб', 'BitsPerComponent' => 'Количество бит на компонент', - 'BitsPerExtendedRunLength' => 'Число битов для кодирования длины длинного запуска.', + 'BitsPerExtendedRunLength' => 'Число битов для кодирования длины длинного запуска', 'BitsPerRunLength' => 'Число битов для кодирования длины короткого запуска', 'BitsPerSample' => 'Количество бит на компонент', 'BlackLevel' => 'Уровень чёрного', - 'BlackLevelBlue' => 'Уровень чёрного - Синий', - 'BlackLevelDeltaH' => 'Уровень чёрного - Delta H', - 'BlackLevelDeltaV' => 'Уровень чёрного - Delta V', - 'BlackLevelGreen' => 'Уровень чёрного - Зелёный', - 'BlackLevelRed' => 'Уровень чёрного - Красный', - 'BlackLevelRepeatDim' => 'Уровень чёрного - Повтор размера патерна', + 'BlackLevelBlue' => 'Уровень чёрного — Синий', + 'BlackLevelDeltaH' => 'Уровень чёрного — Delta H', + 'BlackLevelDeltaV' => 'Уровень чёрного — Delta V', + 'BlackLevelGreen' => 'Уровень чёрного — Зелёный', + 'BlackLevelRed' => 'Уровень чёрного — Красный', + 'BlackLevelRepeatDim' => 'Уровень чёрного — Повтор размера патерна', 'BlueBalance' => 'Баланс синего', 'BookTitle' => 'Название книги', 'Brightness' => 'Яркость', - 'BrightnessValue' => 'Яркость', + 'BrightnessValue' => 'Значение яркость', 'By-line' => 'Автор', 'By-lineTitle' => 'Титул автора', 'CFALayout' => { - Description => 'Структура CFA', + Description => 'Макет CFA', PrintConv => { 'Even columns offset down 1/2 row' => 'Чётные столбцы смещены вниз на 1/2 строки', 'Even columns offset up 1/2 row' => 'Чётные столбцы смещены вверх 1/2 строки', 'Even rows offset down by 1/2 row, even columns offset left by 1/2 column' => 'Чётные строки смещены вниз на 1/2 строки, чётные столбцы смещены влево на 1/2 столбца', 'Even rows offset down by 1/2 row, even columns offset right by 1/2 column' => 'Чётные строки смещены вниз на 1/2 строки, чётные столбцы смещены вправо на 1/2 столбца', - 'Even rows offset left 1/2 column' => 'Чётные строки смещены влево 1/2 столбца', - 'Even rows offset right 1/2 column' => 'Чётные строки смещены вправо 1/2 столбца', + 'Even rows offset left 1/2 column' => 'Чётные строки смещены влево на 1/2 столбца', + 'Even rows offset right 1/2 column' => 'Чётные строки смещены вправо на 1/2 столбца', 'Even rows offset up by 1/2 row, even columns offset left by 1/2 column' => 'Чётные строки смещены вверх на 1/2 строки, чётные столбцы смещены влево на 1/2 столбца', 'Even rows offset up by 1/2 row, even columns offset right by 1/2 column' => 'Чётные строки смещены вверх на 1/2 строки, чётные столбцы смещены вправо на 1/2 столбца', - 'Rectangular' => 'Прямоугольная (или квадратная) компоновка', + 'Rectangular' => 'Прямоугольная компоновка', }, }, 'CFAPattern' => { - Description => 'CFA паттерн', + Description => 'Образец CFA', PrintConv => { - '[Blue,Green][Green,Red]' => '[Синий,Зелёный][Зелёный,Красный]', - '[Green,Blue][Red,Green]' => '[Зелёный,Синий][Красный,Зелёный]', - '[Green,Red][Blue,Green]' => '[Зелёный,Красный][Синий,Зелёный]', - '[Red,Green][Green,Blue]' => '[Красный,Зелёный][Зелёный,Синий]', - 'n/a' => 'Нет данных', + '[Blue,Green][Green,Red]' => '[Синий, Зелёный][Зелёный, Красный]', + '[Green,Blue][Red,Green]' => '[Зелёный, Синий][Красный, Зелёный]', + '[Green,Red][Blue,Green]' => '[Зелёный, Красный][Синий, Зелёный]', + '[Red,Green][Green,Blue]' => '[Красный, Зелёный][Зелёный, Синий]', + 'n/a' => 'Недоступно', }, }, - 'CFAPattern2' => 'Паттерн CFA 2', - 'CFAPlaneColor' => 'CFA - Цветовые плоскости', - 'CFARepeatPatternDim' => 'Повторяющиеся паттерны CFA', - 'CIP3DataFile' => 'CIP3 - Файл данных', - 'CIP3Sheet' => 'CIP3 - Лист', - 'CIP3Side' => 'CIP3 - Сторона', + 'CFAPattern2' => 'Образец CFA 2', + 'CFAPlaneColor' => 'Цветовые плоскости CFA', + 'CFARepeatPatternDim' => 'Повторяющиеся образцы CFA', + 'CIP3DataFile' => 'Файл данных CIP3', + 'CIP3Sheet' => 'Лист CIP3', + 'CIP3Side' => 'Сторона CIP3', 'CMYKEquivalent' => 'Эквивалент CMYK', 'CR2CFAPattern' => { - Description => 'CR2 - Паттерны CFA', + Description => 'CR2-образец CFA', PrintConv => { - '[Blue,Green][Green,Red]' => '[Синий,Зеленый][Зеленый,Красный]', - '[Green,Blue][Red,Green]' => '[Зеленый,Синий][Красный,Зеленый]', - '[Green,Red][Blue,Green]' => '[Зеленый,Красный][Синий,Зеленый]', - '[Red,Green][Green,Blue]' => '[Красный,Зеленый][Зеленый,Синий]', + '[Blue,Green][Green,Red]' => '[Синий, Зеленый][Зеленый, Красный]', + '[Green,Blue][Red,Green]' => '[Зеленый, Синий][Красный, Зеленый]', + '[Green,Red][Blue,Green]' => '[Зеленый, Красный][Синий, Зеленый]', + '[Red,Green][Green,Blue]' => '[Красный, Зеленый][Зеленый, Синий]', }, }, - 'CacheVersion' => 'Версия хеш-суммы', + 'CacheVersion' => 'Версия кэша', 'CalibrationIlluminant1' => { - Description => 'Калибровочное освещение №1', - PrintConv => { - 'Cloudy' => 'Облачно (6500К)', - 'Cool White Fluorescent' => 'Флуоресцентная лампа - Холодный свет (4150К)', - 'D50' => 'D50 (5000К)', - 'D55' => 'D55 (5500К)', - 'D65' => 'D65 (6500К)', - 'D75' => 'D75 (7500К)', - 'Day White Fluorescent' => 'Флуоресцентная лампа - Дневной белый (5050К)', - 'Daylight' => 'Дневной свет (5500К)', - 'Daylight Fluorescent' => 'Флуоресцентная лампа дневного света (6400К)', - 'Fine Weather' => 'Ясная погода (5500К)', - 'Flash' => 'Вспышка (5500К)', - 'Fluorescent' => 'Флуоресцентная лампа (4150К)', - 'ISO Studio Tungsten' => 'Студийная лампа накаливания (3200К)', + Description => 'Калибровочное освещение 1', + PrintConv => { + 'Cloudy' => 'Облачно (6500 К)', + 'Cool White Fluorescent' => 'Флуоресцентная лампа — Холодный свет (4150 К)', + 'D50' => 'D50 (5000 К)', + 'D55' => 'D55 (5500 К)', + 'D65' => 'D65 (6500 К)', + 'D75' => 'D75 (7500 К)', + 'Day White Fluorescent' => 'Флуоресцентная лампа — Дневной белый (5050 К)', + 'Daylight' => 'Дневной свет (5500 К)', + 'Daylight Fluorescent' => 'Флуоресцентная лампа дневного света (6400 К)', + 'Fine Weather' => 'Ясная погода (5500 К)', + 'Flash' => 'Вспышка (5500 К)', + 'Fluorescent' => 'Флуоресцентная лампа (4150 К)', + 'ISO Studio Tungsten' => 'Студийная лампа накаливания (3200 К)', 'Other' => 'Другой источник света', - 'Shade' => 'Тень (7500К)', - 'Standard Light A' => 'Стандартное освещение A. (2850К)', - 'Standard Light B' => 'Стандартное освещение B. (5500К)', - 'Standard Light C' => 'Стандартное освещение C. (6500К)', - 'Tungsten (Incandescent)' => 'Лампа накаливания (2850К)', + 'Shade' => 'Тень (7500 К)', + 'Standard Light A' => 'Стандартное освещение A (2850 К)', + 'Standard Light B' => 'Стандартное освещение B (5500 К)', + 'Standard Light C' => 'Стандартное освещение C (6500 К)', + 'Tungsten (Incandescent)' => 'Лампа накаливания (2850 К)', 'Unknown' => 'Неизвестно', - 'Warm White Fluorescent' => 'Флуоресцентная лампа - Тёплый свет (2925К)', - 'White Fluorescent' => 'Флуоресцентная лампа - Белый свет (3525К)', + 'Warm White Fluorescent' => 'Флуоресцентная лампа — Тёплый свет (2925 К)', + 'White Fluorescent' => 'Флуоресцентная лампа — Белый свет (3525 К)', }, }, 'CalibrationIlluminant2' => { - Description => 'Калибровочное освещение №2', - PrintConv => { - 'Cloudy' => 'Облачно (6500К)', - 'Cool White Fluorescent' => 'Флуоресцентная лампа - Холодный свет (4150К)', - 'D50' => 'D50 (5000К)', - 'D55' => 'D55 (5500К)', - 'D65' => 'D65 (6500К)', - 'D75' => 'D75 (7500К)', - 'Day White Fluorescent' => 'Флуоресцентная лампа - Дневной белый (5050К)', - 'Daylight' => 'Дневной свет (5500К)', - 'Daylight Fluorescent' => 'Флуоресцентная лампа дневного света (6400К)', - 'Fine Weather' => 'Ясная погода (5500К)', - 'Flash' => 'Вспышка (5500К)', - 'Fluorescent' => 'Флуоресцентная лампа (4150К)', - 'ISO Studio Tungsten' => 'Студийная лампа накаливания (3200К)', + Description => 'Калибровочное освещение 2', + PrintConv => { + 'Cloudy' => 'Облачно (6500 К)', + 'Cool White Fluorescent' => 'Флуоресцентная лампа — Холодный свет (4150 К)', + 'D50' => 'D50 (5000 К)', + 'D55' => 'D55 (5500 К)', + 'D65' => 'D65 (6500 К)', + 'D75' => 'D75 (7500 К)', + 'Day White Fluorescent' => 'Флуоресцентная лампа — Дневной белый (5050 К)', + 'Daylight' => 'Дневной свет (5500 К)', + 'Daylight Fluorescent' => 'Флуоресцентная лампа дневного света (6400 К)', + 'Fine Weather' => 'Ясная погода (5500 К)', + 'Flash' => 'Вспышка (5500 К)', + 'Fluorescent' => 'Флуоресцентная лампа (4150 К)', + 'ISO Studio Tungsten' => 'Студийная лампа накаливания (3200 К)', 'Other' => 'Другой источник света', - 'Shade' => 'Тень (7500К)', - 'Standard Light A' => 'Стандартное освещение A. (2850К)', - 'Standard Light B' => 'Стандартное освещение B. (5500К)', - 'Standard Light C' => 'Стандартное освещение C. (6500К)', - 'Tungsten (Incandescent)' => 'Лампа накаливания (2850К)', - 'Unknown' => 'Неизвестный', - 'Warm White Fluorescent' => 'Флуоресцентная лампа - Тёплый свет (2925К)', - 'White Fluorescent' => 'Флуоресцентная лампа - Белый свет (3525К)', - }, - }, - 'CameraCalibration1' => 'Калибровочная матрица фотокамеры №1', - 'CameraCalibration2' => 'Калибровочная матрица фотокамеры №2', + 'Shade' => 'Тень (7500 К)', + 'Standard Light A' => 'Стандартное освещение A (2850 К)', + 'Standard Light B' => 'Стандартное освещение B (5500 К)', + 'Standard Light C' => 'Стандартное освещение C (6500 К)', + 'Tungsten (Incandescent)' => 'Лампа накаливания (2850 К)', + 'Unknown' => 'Неизвестно', + 'Warm White Fluorescent' => 'Флуоресцентная лампа — Тёплый свет (2925 К)', + 'White Fluorescent' => 'Флуоресцентная лампа — Белый свет (3525 К)', + }, + }, + 'CameraCalibration1' => 'Калибровочная матрица фотокамеры 1', + 'CameraCalibration2' => 'Калибровочная матрица фотокамеры 2', 'CameraCalibrationSig' => 'Сигнатура калибровки камеры', 'CameraElevationAngle' => 'Угол обзора камеры', 'CameraLabel' => 'Название камеры', @@ -241,7 +241,7 @@ $VERSION = '1.05'; PrintConv => { 'Auto' => 'Автоматическая', 'No correction params available' => 'Недоступна', - 'Off' => 'Не включена', + 'Off' => 'Отключена', }, }, 'City' => 'Город происхождения данных', @@ -250,7 +250,7 @@ $VERSION = '1.05'; Description => 'Наличие битых строк', PrintConv => { 'Clean' => 'Без битых строк', - 'Regenerated' => 'Битые строки восстановлены', + 'Regenerated' => 'Битые строки восстановлены', 'Unclean' => 'Битые строки не восстановлены', }, }, @@ -261,10 +261,10 @@ $VERSION = '1.05'; PrintConv => { 'Baseline JPEG' => 'Базовое JPEG', 'JBIG color' => 'Цветное JBIG', - 'Modified Huffman' => 'Одномерное - Модификация Хаффмана', - 'Modified MR' => 'Двумерное - Modified Modified READ', - 'Modified Read' => 'Двумерное - Modified READ', - 'Unspecified compression' => 'Неуказанное сжатие', + 'Modified Huffman' => 'Одномерное — Модификация Хаффмана', + 'Modified MR' => 'Двумерное — Modified Modified READ', + 'Modified Read' => 'Двумерное — Modified READ', + 'Unspecified compression' => 'Не указанное сжатие', }, }, 'ColorCalibrationMatrix' => 'Матрица калибровки цвета', @@ -276,20 +276,20 @@ $VERSION = '1.05'; }, 'ColorFilter' => 'Цветовой фильтр', 'ColorMap' => 'Карта цветов', - 'ColorMatrix1' => 'Цветовая матрица №1', - 'ColorMatrix2' => 'Цветовая матрица №2', + 'ColorMatrix1' => 'Цветовая матрица 1', + 'ColorMatrix2' => 'Цветовая матрица 2', 'ColorMode' => { - Description => 'ТворческийСтиль', + Description => 'Творческий Стиль', PrintConv => { 'Autumn Leaves' => 'Осенние листья', - 'B&W' => 'Черно-белое', + 'B&W' => 'Чёрно-белое', 'Clear' => 'Прозрачный', 'Deep' => 'Глубокий', 'Landscape' => 'Пейзаж', 'Light' => 'Бледный', 'Neutral' => 'Нейтральный', 'Night View' => 'Ночной вид', - 'Night View/Portrait' => 'Ночной портрет', + 'Night View/Portrait' => 'Ночной вид/портрет', 'Portrait' => 'Портрет', 'Standard' => 'Стандартное', 'Sunset' => 'Закат', @@ -317,12 +317,12 @@ $VERSION = '1.05'; }, }, 'ColorResponseUnit' => 'Единицы цветовой чувствительности', - 'ColorSequence' => 'Последовательность цветов отличной от CMYK', + 'ColorSequence' => 'Последовательность цветов', 'ColorSpace' => { Description => 'Цветовое пространство', PrintConv => { - 'ICC Profile' => 'Профиль ICC', - 'Uncalibrated' => 'Не указано', + 'ICC Profile' => 'ICC-профиль', + 'Uncalibrated' => 'Некалиброванный', }, }, 'ColorTable' => 'Таблица цвета', @@ -335,51 +335,51 @@ $VERSION = '1.05'; PrintConv => { 'Composite Image Captured While Shooting' => 'Полученное во время съёмки', 'General Composite Image' => 'Созданное в редакторе', - 'Not a Composite Image' => 'Нет', + 'Not a Composite Image' => 'Не составное изображение', + 'Unknown' => 'Неизвестно', }, }, - 'CompositeImageCount' => 'Составное изображение - Количество', - 'CompositeImageExposureTimes' => 'Составное изображение - Выдержка', - 'CompressedBitsPerPixel' => 'Сжатые Биты на Пиксель', + 'CompositeImageCount' => 'Составное изображение — Количество', + 'CompositeImageExposureTimes' => 'Составное изображение — Выдержка', + 'CompressedBitsPerPixel' => 'Сжатые биты на пиксель', 'Compression' => { Description => 'Метод сжатия', PrintConv => { - 'JPEG' => 'JPEG сжатие', 'JPEG (old-style)' => 'JPEG (старый стиль)', - 'Uncompressed' => 'Без сжатия', + 'Uncompressed' => 'Несжатый', }, }, 'ConfirmedObjectSize' => 'Подтверждённый размер объекта', - 'ConsecutiveBadFaxLines' => 'Количество последовательных битых строк ', + 'ConsecutiveBadFaxLines' => 'Количество последовательных битых строк', 'Contact' => 'Контакт', 'ContainerVersion' => 'Версия контейнера', - 'ContentLocationCode' => 'Контент - Код страны', - 'ContentLocationName' => 'Контент - Страна', + 'ContentLocationCode' => 'Контент — Код страны', + 'ContentLocationName' => 'Контент — Страна', 'Contrast' => { Description => 'Контрастность', PrintConv => { 'High' => 'Высокая', 'Low' => 'Низкая', - 'Normal' => 'Стандартная', + 'Normal' => 'Обычная', }, }, 'Converter' => 'Конвертер', 'Copyright' => 'Авторское право', - 'CopyrightNotice' => 'Авторское право', + 'CopyrightNotice' => 'Уведомление об авторских правах', 'Country' => 'Страна', 'Country-PrimaryLocationCode' => 'Код страны', 'Country-PrimaryLocationName' => 'Страна', 'CreateDate' => 'Дата создания', 'CreationDate' => 'Дата создания', - 'Creator' => 'Создан в', - 'CreatorVersion' => 'Версия исходного приложения', + 'Creator' => 'Создавшее приложение', + 'CreatorVersion' => 'Версия создавшего приложения', 'Credit' => 'Поставщик', 'CropBottom' => 'Обрезка снизу', 'CropLeft' => 'Обрезка слева', 'CropRight' => 'Обрезка справа', 'CropTop' => 'Обрезка сверху', - 'CurrentICCProfile' => 'Текущий ICC профиль', - 'CurrentPreProfileMatrix' => 'Текущий Pre профиль матрицы', + 'CurrentICCProfile' => 'Текущий ICC-профиль', + 'CurrentPreProfileMatrix' => 'Текущий предварительный профиль матрицы', 'CustomRendered' => { Description => 'Пользовательский рендеринг', PrintConv => { @@ -389,11 +389,11 @@ $VERSION = '1.05'; 'Portrait' => 'Портрет', }, }, - 'DNGAdobeData' => 'DNG - Данные Adobe', - 'DNGBackwardVersion' => 'DNG - Совместимая версия', + 'DNGAdobeData' => 'DNG — Данные Adobe', + 'DNGBackwardVersion' => 'DNG — Совместимая версия', 'DNGLensInfo' => 'Минимальное фокусное расстояние', - 'DNGPrivateData' => 'DNG - Данные производителя', - 'DNGVersion' => 'DNG - Версия', + 'DNGPrivateData' => 'DNG — Данные производителя', + 'DNGVersion' => 'DNG — Версия', 'DataCompressionMethod' => 'Метод сжатия данных', 'DataType' => 'Тип данных', 'DateCreated' => 'Дата создания', @@ -401,10 +401,10 @@ $VERSION = '1.05'; 'DateTimeOriginal' => 'Дата съёмки', 'Decode' => 'Декодирование', 'DefaultBlackRender' => { - Description => 'Вычитание уровня чёрного', + Description => 'Приведение чёрного по-умолчанию', PrintConv => { 'Auto' => 'Автоматически', - 'None' => 'Не обрабатывать', + 'None' => 'Никак', }, }, 'DefaultCropOrigin' => 'Положение обрезанного изображения по-умолчанию', @@ -416,38 +416,38 @@ $VERSION = '1.05'; 'DeviceSettingDescription' => 'Описание предустановок камеры', 'DigitalCreationDate' => 'Дата создания файла', 'DigitalCreationTime' => 'Время создания файла', - 'DigitalZoom' => 'Цифровой зум', + 'DigitalZoom' => 'Цифровое увеличение', 'DigitalZoomRatio' => 'Коэффициент цифрового увеличения', - 'Directory' => '"Файл, размещение"', + 'Directory' => 'Каталог', 'DistortionCorrParams' => 'Параметры коррекции дисторсии', 'DistortionCorrection' => { Description => 'Коррекция дисторсии', PrintConv => { 'Auto' => 'Автоматическая', 'Auto fixed by lens' => 'Автоматическая по объективу', - 'No correction params available' => 'Недоступна', - 'Off' => 'Не включена', + 'No correction params available' => 'Корректирующие параметры недоступны', + 'Off' => 'Отключена', }, }, 'DjVuVersion' => 'Версия DjVu', 'DocumentHistory' => 'История документа', 'DocumentName' => 'Имя документа', 'DocumentNotes' => 'Комментарии к документу', - 'DocumentUsageRights' => 'Права на использование Документа', + 'DocumentUsageRights' => 'Права на использование документа', 'DotRange' => 'Значения компонента соответствующих точке', 'DriveMode' => 'Режим спуска', 'DynamicRangeOptimizer' => { - Description => 'Оптим.Д-диапаз.', - PrintConv => { - 'Advanced Auto' => 'Улучш.авто', - 'Advanced Lv1' => 'Улучш.уровень1', - 'Advanced Lv2' => 'Улучш.уровень2', - 'Advanced Lv3' => 'Улучш.уровень3', - 'Advanced Lv4' => 'Улучш.уровень4', - 'Advanced Lv5' => 'Улучш.уровень5', - 'Auto' => 'Авто', - 'Off' => 'Отключено', - 'Standard' => 'Стандартное', + Description => 'Оптимизатор динамического диапазона', + PrintConv => { + 'Advanced Auto' => 'Продвинутый автоматический', + 'Advanced Lv1' => 'Продвинутый 1-го уровня', + 'Advanced Lv2' => 'Продвинутый 2-го уровня', + 'Advanced Lv3' => 'Продвинутый 3-го уровня', + 'Advanced Lv4' => 'Продвинутый 4-го уровня', + 'Advanced Lv5' => 'Продвинутый 5-го уровня', + 'Auto' => 'Автоматический', + 'Off' => 'Отключён', + 'Standard' => 'Стандартный', }, }, 'EditStatus' => 'Статус редактирования', @@ -458,26 +458,26 @@ $VERSION = '1.05'; 'Additional language' => 'Дополнительный язык', }, }, - 'EmbeddedFileUsageRights' => 'Права на использование Встроенных файлов', + 'EmbeddedFileUsageRights' => 'Права на использование встроенных файлов', 'EmbeddedImage' => 'Встроенное изображение', - 'EmbeddedImageColorSpace' => 'Встроенное изображение - Цветовое пространство', - 'EmbeddedImageFilter' => 'Встроенное изображение - Фильтр', - 'EmbeddedImageHeight' => 'Встроенное изображение - Высота', - 'EmbeddedImageWidth' => 'Встроенное изображение - Ширина', + 'EmbeddedImageColorSpace' => 'Встроенное изображение — Цветовое пространство', + 'EmbeddedImageFilter' => 'Встроенное изображение — Фильтр', + 'EmbeddedImageHeight' => 'Встроенное изображение — Высота', + 'EmbeddedImageWidth' => 'Встроенное изображение — Ширина', 'Encryption' => 'Шифрование', 'EndPoints' => 'Конечные точки', 'EnvelopeNumber' => 'Номер конверта', 'EnvelopePriority' => { Description => 'Приоритет конверта', PrintConv => { - '0 (reserved)' => '0 (В резерве)', - '1 (most urgent)' => '1 (Неотложное)', - '5 (normal urgency)' => '5 (Обычное)', - '8 (least urgent)' => '8 (Не срочное)', - '9 (user-defined priority)' => '9 (Пользовательский приоритет)', + '0 (reserved)' => '0 (зарезервирован)', + '1 (most urgent)' => '1 (неотложный)', + '5 (normal urgency)' => '5 (обычный)', + '8 (least urgent)' => '8 (несрочный)', + '9 (user-defined priority)' => '9 (пользовательский приоритет)', }, }, - 'EnvelopeRecordVersion' => 'Версия Envelope Record', + 'EnvelopeRecordVersion' => 'Версия записи конверта', 'ExcursionTolerance' => { Description => 'Выход за пределы диапазона', PrintConv => { @@ -486,16 +486,16 @@ $VERSION = '1.05'; }, }, 'ExifCameraInfo' => 'Сведения о камере из Exif', - 'ExifImageHeight' => 'Exif - Высота изображения', - 'ExifImageWidth' => 'Exif - Ширина изображения', + 'ExifImageHeight' => 'Exif — Высота изображения', + 'ExifImageWidth' => 'Exif — Ширина изображения', 'ExifOffset' => 'Exif IFD указатель', 'ExifVersion' => 'Версия Exif', - 'ExpandFilm' => 'Expand - Пленка', - 'ExpandFilterLens' => 'Expand - Фильтр объектива', - 'ExpandFlashLamp' => 'Expand - Вспышка', - 'ExpandLens' => 'Expand - Объектив', - 'ExpandScanner' => 'Expand - Сканер', - 'ExpandSoftware' => 'Expand - Приложение', + 'ExpandFilm' => 'Expand — Плёнка', + 'ExpandFilterLens' => 'Expand — Фильтр объектива', + 'ExpandFlashLamp' => 'Expand — Вспышка', + 'ExpandLens' => 'Expand — Объектив', + 'ExpandScanner' => 'Expand — Сканер', + 'ExpandSoftware' => 'Expand — Приложение', 'ExpirationDate' => 'Дата истечения срока', 'ExpirationTime' => 'Время истечения срока', 'Exposure' => 'Экспозиция', @@ -513,15 +513,15 @@ $VERSION = '1.05'; Description => 'Программа экспозиции', PrintConv => { 'Action (High speed)' => 'Спорт', - 'Aperture-priority AE' => 'Автоэкспозиция с приоритетом Диафрагмы', + 'Aperture-priority AE' => 'Автоэкспозиция с приоритетом диафрагмы', 'Bulb' => 'Выдержка от руки', 'Creative (Slow speed)' => 'Творческая', 'Landscape' => 'Пейзаж', 'Manual' => 'Ручная', - 'Not Defined' => 'Не определено', + 'Not Defined' => 'Не определена', 'Portrait' => 'Портрет', 'Program AE' => 'Программная автоэкспозиция', - 'Shutter speed priority AE' => 'Автоэкспозиция с приоритетом Выдержки', + 'Shutter speed priority AE' => 'Автоэкспозиция с приоритетом выдержки', }, }, 'ExposureTime' => 'Выдержка', @@ -529,38 +529,38 @@ $VERSION = '1.05'; Description => 'Описание дополнительных компонентов', PrintConv => { 'Associated Alpha' => 'Связаные альфа-данные', - 'Unassociated Alpha' => 'Не связанные альфа-данные', - 'Unspecified' => 'Данные без указания', + 'Unassociated Alpha' => 'Несвязанные альфа-данные', + 'Unspecified' => 'Не указаны', }, }, - 'FNumber' => 'Диафрагма', + 'FNumber' => 'Относительное отверстие', 'FaceOrientation' => { PrintConv => { - 'Horizontal (normal)' => 'Положительное направление', + 'Horizontal (normal)' => 'Горизонтально (обычно)', 'Rotate 180' => 'Поворот на 180°', 'Rotate 270 CW' => 'Поворот на 270° по часовой стрелке', 'Rotate 90 CW' => 'Поворот на 90° по часовой стрелке', }, }, 'FaxProfile' => { - Description => 'Факс профиль', + Description => 'Факс-профиль', PrintConv => { - 'Extended B&W lossless, F' => 'Черно-белый без потерь расширенный, профиль F', - 'Lossless JBIG B&W, J' => 'JBIG черно-белый без потерь, профиль J', + 'Extended B&W lossless, F' => 'Расширенный чёрно-белый без потерь, профиль F', + 'Lossless JBIG B&W, J' => 'JBIG чёрно-белый без потерь, профиль J', 'Lossless color and grayscale, L' => 'Цветной и с оттенками серого без потерь, профиль L', 'Lossy color and grayscale, C' => 'Цветной и с оттенками серого с потерями, профиль C', - 'Minimal B&W lossless, S' => 'Минимальный черно-белый без потерь, профиль S', + 'Minimal B&W lossless, S' => 'Минимальный чёрно-белый без потерь, профиль S', 'Mixed raster content, M' => 'Смешанное содержимое растра, профиль M', 'Multi Profiles' => 'Несколько профилей', 'Profile T' => 'Профиль T', - 'Unknown' => 'Не соответствует профилю факсимильной связи', + 'Unknown' => 'Неизвестно', }, }, 'FaxRecvParams' => 'Параметры получения факсов', 'FaxRecvTime' => 'Требуемое время для получения факса', - 'FaxSubAddress' => 'Субадрес факса', + 'FaxSubAddress' => 'Подадрес факса', 'FieldPermissions' => { - Description => 'Разрешения на изменение Полей', + Description => 'Разрешения доступа к полям', PrintConv => { 'Allow changes to specified form fields' => 'Разрешить изменения в указанных полях формы', 'Disallow changes to all form fields' => 'Запретить изменения во всех полях формы', @@ -575,13 +575,13 @@ $VERSION = '1.05'; Description => 'Источник файла', PrintConv => { 'Digital Camera' => 'Цифровая фотокамера', - 'Film Scanner' => 'Пленочный сканер', + 'Film Scanner' => 'Плёночный сканер', 'Reflection Print Scanner' => 'Планшетный сканер', 'Sigma Digital Camera' => 'Цифровая фотокамера Sigma', }, }, 'FileType' => 'Тип файла', - 'FileVersion' => 'Версия формата', + 'FileVersion' => 'Версия файла', 'Filename' => 'Имя файла', 'FillOrder' => { Description => 'Порядок битов в байте', @@ -594,180 +594,180 @@ $VERSION = '1.05'; 'Flash' => { Description => 'Состояние вспышки при съёмке', PrintConv => { - 'Auto, Did not fire' => 'Автоматический режим. Вспышка не сработала.', - 'Auto, Did not fire, Red-eye reduction' => 'Автоматический режим. Вспышка не сработала. Включен режим уменьшения эффекта "красных глаз". ', - 'Auto, Fired' => 'Автоматический режим. Вспышка сработала.', - 'Auto, Fired, Red-eye reduction' => 'Автоматический режим. Вспышка сработала.', - 'Auto, Fired, Red-eye reduction, Return detected' => 'Автоматический режим. Вспышка сработала. Включен режим уменьшения эффекта "красных глаз". Отражённый свет обнаружен.', - 'Auto, Fired, Red-eye reduction, Return not detected' => 'Автоматический режим. Вспышка сработала. Включен режим уменьшения эффекта "красных глаз". Отражённый свет не обнаружен.', - 'Auto, Fired, Return detected' => 'Автоматический режим. Вспышка сработала. Отражённый свет обнаружен.', - 'Auto, Fired, Return not detected' => 'Автоматический режим. Вспышка сработала. Отражённый свет не обнаружен.', + 'Auto, Did not fire' => 'Автоматический режим. Вспышка не сработала', + 'Auto, Did not fire, Red-eye reduction' => 'Автоматический режим. Вспышка не сработала. Включён режим уменьшения эффекта «красных глаз»', + 'Auto, Fired' => 'Автоматический режим. Вспышка сработала', + 'Auto, Fired, Red-eye reduction' => 'Автоматический режим. Вспышка сработала', + 'Auto, Fired, Red-eye reduction, Return detected' => 'Автоматический режим. Вспышка сработала. Включён режим уменьшения эффекта «красных глаз». Отражённый свет обнаружен', + 'Auto, Fired, Red-eye reduction, Return not detected' => 'Автоматический режим. Вспышка сработала. Включён режим уменьшения эффекта «красных глаз». Отражённый свет не обнаружен', + 'Auto, Fired, Return detected' => 'Автоматический режим. Вспышка сработала. Отражённый свет обнаружен', + 'Auto, Fired, Return not detected' => 'Автоматический режим. Вспышка сработала. Отражённый свет не обнаружен', 'Did not fire' => 'Вспышка не сработала', - 'Fired' => 'Вспышка сработала.', - 'Fired, Red-eye reduction' => 'Вспышка сработала. Включен режим уменьшения эффекта "красных глаз".', - 'Fired, Red-eye reduction, Return detected' => 'Вспышка сработала. Включен режим уменьшения эффекта "красных глаз". Отражённый свет обнаружен.', - 'Fired, Red-eye reduction, Return not detected' => 'Вспышка сработала. Включен режим уменьшения эффекта "красных глаз". Отражённый свет не обнаружен.', - 'Fired, Return detected' => 'Вспышка сработала. Отражённый свет обнаружен.', - 'Fired, Return not detected' => 'Вспышка сработала. Отражённый свет не обнаружен.', - 'No Flash' => 'Без вспышки.', - 'No flash function' => 'Функция вспышки не поддерживается.', - 'Off, Did not fire' => 'Отключена. Вспышка не сработала.', - 'Off, Did not fire, Return not detected' => 'Отключена. Вспышка не сработала. Отражённый свет не обнаружен.', - 'Off, No flash function' => 'Вспышка отключена. Функция вспышки не поддерживается.', - 'Off, Red-eye reduction' => 'Вспышка отключена. Включен режим уменьшения эффекта "красных глаз".', - 'On, Did not fire' => 'Принудительный режим. Вспышка не сработала.', - 'On, Fired' => 'Принудительный режим. Вспышка сработала.', - 'On, Red-eye reduction' => 'Принудительный режим. Включен режим уменьшения эффекта "красных глаз".', - 'On, Red-eye reduction, Return detected' => 'Принудительный режим. Включен режим уменьшения эффекта "красных глаз". Отражённый свет обнаружен.', - 'On, Red-eye reduction, Return not detected' => 'Принудительный режим. Включен режим уменьшения эффекта "красных глаз". Отражённый свет не обнаружен.', - 'On, Return detected' => 'Принудительный режим. Отражённый свет обнаружен.', - 'On, Return not detected' => 'Принудительный режим. Отражённый свет не обнаружен.', + 'Fired' => 'Вспышка сработала', + 'Fired, Red-eye reduction' => 'Вспышка сработала. Включён режим уменьшения эффекта «красных глаз»', + 'Fired, Red-eye reduction, Return detected' => 'Вспышка сработала. Включён режим уменьшения эффекта «красных глаз». Отражённый свет обнаружен', + 'Fired, Red-eye reduction, Return not detected' => 'Вспышка сработала. Включён режим уменьшения эффекта «красных глаз». Отражённый свет не обнаружен', + 'Fired, Return detected' => 'Вспышка сработала. Отражённый свет обнаружен', + 'Fired, Return not detected' => 'Вспышка сработала. Отражённый свет не обнаружен', + 'No Flash' => 'Без вспышки', + 'No flash function' => 'Функция вспышки не поддерживается', + 'Off, Did not fire' => 'Отключена. Вспышка не сработала', + 'Off, Did not fire, Return not detected' => 'Отключена. Вспышка не сработала. Отражённый свет не обнаружен', + 'Off, No flash function' => 'Вспышка отключена. Функция вспышки не поддерживается', + 'Off, Red-eye reduction' => 'Вспышка отключена. Включён режим уменьшения эффекта «красных глаз»', + 'On, Did not fire' => 'Принудительный режим. Вспышка не сработала', + 'On, Fired' => 'Принудительный режим. Вспышка сработала', + 'On, Red-eye reduction' => 'Принудительный режим. Включён режим уменьшения эффекта «красных глаз»', + 'On, Red-eye reduction, Return detected' => 'Принудительный режим. Включён режим уменьшения эффекта «красных глаз». Отражённый свет обнаружен', + 'On, Red-eye reduction, Return not detected' => 'Принудительный режим. Включён режим уменьшения эффекта «красных глаз». Отражённый свет не обнаружен', + 'On, Return detected' => 'Принудительный режим. Отражённый свет обнаружен', + 'On, Return not detected' => 'Принудительный режим. Отражённый свет не обнаружен', }, }, 'FlashEnergy' => 'Мощность вспышки', 'FlashExposureComp' => 'Коррекция вспышки', - 'FlashpixVersion' => 'Поддерживаемая версия Flashpix', + 'FlashpixVersion' => 'Версия Flashpix', 'FocalLength' => 'Фокусное расстояние', - 'FocalLength35efl' => 'Фокусное расстояние (приведено к 35 мм)', - 'FocalLengthIn35mmFormat' => 'Эквивалентное фокусное расстояние для 35-мм фотопленки', + 'FocalLength35efl' => 'Эквивалентное (35 мм) фокусное расстояние', + 'FocalLengthIn35mmFormat' => 'Фокусное расстояние для 35-мм формата', 'FocalPlaneResolutionUnit' => { Description => 'Единицы разрешения в фокальной плоскости', PrintConv => { - 'None' => 'Не указано', - 'cm' => 'см.', + 'None' => 'Никакая', + 'cm' => 'см', 'inches' => 'дюймы', - 'mm' => 'мм.', - 'um' => 'мкм.', + 'mm' => 'мм', + 'um' => 'мкм', }, }, 'FocalPlaneXResolution' => 'Разрешение в фокальной плоскости по X', 'FocalPlaneYResolution' => 'Разрешение в фокальной плоскости по Y', 'FocusMode' => 'Фокусировка', - 'FormExtraUsageRights' => 'Права на использование Форм Extra', + 'FormExtraUsageRights' => 'Права на использование форм Extra', 'FormFields' => 'Поля форм', - 'FormUsageRights' => 'Права на использование Форм', - 'ForwardMatrix1' => 'Прямая матрица №1', - 'ForwardMatrix2' => 'Прямая матрица №2', - 'FovCot' => 'Угол обзора и Котангенс', + 'FormUsageRights' => 'Права на использование форм', + 'ForwardMatrix1' => 'Прямая матрица 1', + 'ForwardMatrix2' => 'Прямая матрица 2', + 'FovCot' => 'Угол обзора и котангенс', 'FrameRate' => 'Частота кадров', - 'FrameSize' => '"Кадр, размер"', + 'FrameSize' => 'Размер кадра', 'FreeByteCounts' => 'Количество байтов в строке неиспользуемых байтов', 'FreeOffsets' => 'Смещение к строке неиспользуемых байтов', - 'GDALMetadata' => 'GDAL - Метаданные', - 'GDALNoData' => 'GDAL - Прозрачность', - 'GPSAltitude' => ' GPS - Высота', + 'GDALMetadata' => 'GDAL — Метаданные', + 'GDALNoData' => 'GDAL — Прозрачность', + 'GPSAltitude' => 'GPS — Высота', 'GPSAltitudeRef' => { - Description => ' GPS - Индекс высоты', + Description => 'GPS — Индекс высоты', PrintConv => { 'Above Sea Level' => 'Над уровнем моря', 'Below Sea Level' => 'Ниже уровня моря', }, }, - 'GPSAreaInformation' => ' GPS - Название области', - 'GPSDOP' => ' GPS - Точность измерения', - 'GPSDateStamp' => ' GPS - Дата и время', - 'GPSDestBearing' => ' GPS - Пеленг объекта съёмки', + 'GPSAreaInformation' => 'GPS — Название области', + 'GPSDOP' => 'GPS — Точность измерения', + 'GPSDateStamp' => 'GPS — Дата и время', + 'GPSDestBearing' => 'GPS — Пеленг объекта съёмки', 'GPSDestBearingRef' => { - Description => ' GPS - Ориентир пеленга объекта съёмки', + Description => 'GPS — Ориентир пеленга объекта съёмки', PrintConv => { 'Magnetic North' => 'На магнитный северный полюс', 'True North' => 'На географический северный полюс', }, }, - 'GPSDestDistance' => ' GPS - Расстояние до объекта съёмки', + 'GPSDestDistance' => 'GPS — Расстояние до объекта съёмки', 'GPSDestDistanceRef' => { - Description => ' GPS - Единицы измерения расстояния', + Description => 'GPS — Единицы измерения расстояния', PrintConv => { 'Kilometers' => 'Километры', 'Miles' => 'Мили', 'Nautical Miles' => 'Морские мили', }, }, - 'GPSDestLatitude' => ' GPS - Широта объекта съёмки', + 'GPSDestLatitude' => 'GPS — Широта объекта съёмки', 'GPSDestLatitudeRef' => { - Description => ' GPS - Индекс широты объекта съёмки', + Description => 'GPS — Индекс широты объекта съёмки', PrintConv => { 'North' => 'Северная широта', 'South' => 'Южная широта', }, }, - 'GPSDestLongitude' => ' GPS - Долгота объекта съёмки', + 'GPSDestLongitude' => 'GPS — Долгота объекта съёмки', 'GPSDestLongitudeRef' => { - Description => ' GPS - Индекс долготы объекта съёмки', + Description => 'GPS — Индекс долготы объекта съёмки', PrintConv => { 'East' => 'Восточная долгота', 'West' => 'Западная долгота', }, }, 'GPSDifferential' => { - Description => ' GPS - Дифференциальная поправка', + Description => 'GPS — Дифференциальная поправка', PrintConv => { 'Differential Corrected' => 'Дифференциальная поправка применена', 'No Correction' => 'Измерение без дифференциальной поправки', }, }, - 'GPSHPositioningError' => ' GPS - Ошибка горизонтального позиционирования', - 'GPSImgDirection' => ' GPS - Направления камеры при съёмке', + 'GPSHPositioningError' => 'GPS — Ошибка горизонтального позиционирования', + 'GPSImgDirection' => 'GPS — Направления камеры при съёмке', 'GPSImgDirectionRef' => { - Description => ' GPS - Ориентир направления камеры', + Description => 'GPS — Ориентир направления камеры', PrintConv => { 'Magnetic North' => 'На магнитный северный полюс', 'True North' => 'На географический северный полюс', }, }, 'GPSInfo' => 'IFD указатель информации GPS', - 'GPSLatitude' => ' GPS - Широта', + 'GPSLatitude' => 'GPS — Широта', 'GPSLatitudeRef' => { - Description => ' GPS - Индекс широты', + Description => 'GPS — Индекс широты', PrintConv => { 'North' => 'Северная широта', 'South' => 'Южная широта', }, }, - 'GPSLongitude' => ' GPS - Долгота', + 'GPSLongitude' => 'GPS — Долгота', 'GPSLongitudeRef' => { - Description => ' GPS - Индекс долготы', + Description => 'GPS — Индекс долготы', PrintConv => { 'East' => 'Восточная долгота', 'West' => 'Западная долгота', }, }, - 'GPSMapDatum' => ' GPS - Система координат', + 'GPSMapDatum' => 'GPS — Система координат', 'GPSMeasureMode' => { - Description => ' GPS - Режим измерения GPS', + Description => 'GPS — Режим измерения GPS', PrintConv => { '2-Dimensional Measurement' => '2-мерная навигация', '3-Dimensional Measurement' => '3-мерная навигация', }, }, - 'GPSProcessingMethod' => ' GPS - Метод вычисления положения', - 'GPSSatellites' => ' GPS - Используемые спутники', - 'GPSSpeed' => ' GPS - Скорость передвижения', + 'GPSProcessingMethod' => 'GPS — Метод вычисления положения', + 'GPSSatellites' => 'GPS — Используемые спутники', + 'GPSSpeed' => 'GPS — Скорость передвижения', 'GPSSpeedRef' => { - Description => ' GPS - Единицы измерения скорости', + Description => 'GPS — Единицы измерения скорости', PrintConv => { - 'km/h' => 'Километров в час', + 'km/h' => 'Км/ч', 'knots' => 'Узлы', - 'mph' => 'Миль в час', + 'mph' => 'Миля/ч', }, }, 'GPSStatus' => { - Description => ' GPS - Состояние приемника во время съёмки', + Description => 'GPS — Состояние приёмника во время съёмки', PrintConv => { 'Measurement Active' => 'Координаты актуальные', 'Measurement Void' => 'Актуальных координат нету', }, }, - 'GPSTimeStamp' => ' GPS - Время записанных координат', - 'GPSTrack' => ' GPS - Трек', + 'GPSTimeStamp' => 'GPS — Время записанных координат', + 'GPSTrack' => 'GPS — Трек', 'GPSTrackRef' => { - Description => ' GPS - Ориентир направления', + Description => 'GPS — Ориентир направления', PrintConv => { 'Magnetic North' => 'На магнитный северный полюс', 'True North' => 'На географический северный полюс', }, }, - 'GPSVersionID' => ' GPS - Версия тегов', + 'GPSVersionID' => 'GPS — Версия тегов', 'GainControl' => { Description => 'Управление усилением', PrintConv => { @@ -775,58 +775,58 @@ $VERSION = '1.05'; 'High gain up' => 'С большим шагом вверх', 'Low gain down' => 'С малым шагом вниз', 'Low gain up' => 'С малым шагом вверх', - 'None' => 'Отсутствует', + 'None' => 'Никакое', }, }, 'Gamma' => 'Гамма', 'GammaCompensatedValue' => 'Значение гамма-компенсации', - 'GeoTiffAsciiParams' => 'Geo Tiff - Параметры Ascii', - 'GeoTiffDirectory' => 'Geo Tiff - Каталог', - 'GeoTiffDoubleParams' => 'Geo Tiff - Параметры дублирования', + 'GeoTiffAsciiParams' => 'Geo Tiff — Параметры Ascii', + 'GeoTiffDirectory' => 'Geo Tiff — Каталог', + 'GeoTiffDoubleParams' => 'Geo Tiff — Параметры дублирования', 'GooglePlusUploadCode' => 'Код загрузки Google Plus', - 'Gradation' => 'Впечатляющ.режим', + 'Gradation' => 'Градация', 'GrayResponseCurve' => 'Оптическая плотность серого', 'GrayResponseUnit' => 'Единицы плотности серого', - 'HCUsage' => 'Тип информации HC файла', + 'HCUsage' => 'Использование HC', 'HDR' => { - Description => 'Авто HDR', + Description => 'HDR', PrintConv => { - 'Off' => 'Отключено', + 'Off' => 'Отключён', }, }, - 'HalftoneHints' => 'Хинты полутонов', + 'HalftoneHints' => 'Подсказки полутонов', 'HasXFA' => { - Description => 'XFA', + Description => 'Имеет XFA', PrintConv => { - 'No' => 'Отсутствует', - 'Yes' => 'Есть', + 'No' => 'Нет', + 'Yes' => 'Да', }, }, 'Headline' => 'Заголовок', - 'HeightResolution' => 'Разрешение по высоте (PPI)', - 'HighISOMultiplierBlue' => 'Множитель ISO - Синий', - 'HighISOMultiplierGreen' => 'Множитель ISO - Зелёный', - 'HighISOMultiplierRed' => 'Множитель ISO - Красный', + 'HeightResolution' => 'Разрешение по высоте', + 'HighISOMultiplierBlue' => 'Множитель ISO — Синий', + 'HighISOMultiplierGreen' => 'Множитель ISO — Зелёный', + 'HighISOMultiplierRed' => 'Множитель ISO — Красный', 'HighISONoiseReduction' => { - Description => 'NR высокого ISO', + Description => 'Шумоподавление при повышенных ISO', PrintConv => { - 'Auto' => 'Авто', - 'High' => 'Hi', - 'Low' => 'Lo', - 'Normal' => 'Нормальная', + 'Auto' => 'Автоматическое', + 'High' => 'Высокое', + 'Low' => 'Низкое', + 'Normal' => 'Обычное', 'Off' => 'Отключено', }, }, - 'HostComputer' => 'Компьютер/Система', + 'HostComputer' => 'Узловой компьютер', 'HowPublished' => 'Метод публикации', 'Hue' => 'Оттенок', 'Humidity' => 'Влажность', - 'ICC_Profile' => 'ICC Профиль', - 'INGRReserved' => 'Intergraph - Резерв', - 'IPTCBitsPerSample' => 'IPTC - Количество бит на компонент', - 'IPTCImageHeight' => 'IPTC - Высота изображения', + 'ICC_Profile' => 'ICC-профиль', + 'INGRReserved' => 'INGR — Резерв', + 'IPTCBitsPerSample' => 'IPTC — Количество бит на компонент', + 'IPTCImageHeight' => 'IPTC — Высота изображения', 'IPTCImageRotation' => { - Description => 'IPTC - Вращение изображения', + Description => 'IPTC — Вращение изображения', PrintConv => { '0' => 'Не вращать', '180' => 'Повернуть вправо на 180°', @@ -834,43 +834,43 @@ $VERSION = '1.05'; '90' => 'Повернуть вправо на 90°', }, }, - 'IPTCImageWidth' => 'IPTC - Ширина изображения', - 'IPTCPictureNumber' => 'IPTC - Номер изображения', - 'IPTCPixelHeight' => 'IPTC - Высота (в пикселях)', - 'IPTCPixelWidth' => 'IPTC - Ширина (в пикселях)', + 'IPTCImageWidth' => 'IPTC — Ширина изображения', + 'IPTCPictureNumber' => 'IPTC — Номер изображения', + 'IPTCPixelHeight' => 'IPTC — Высота в пикселях', + 'IPTCPixelWidth' => 'IPTC — Ширина в пикселях', 'ISO' => 'Значение ISO', 'ISOSpeed' => 'ISO', - 'ISOSpeedLatitudeyyy' => 'ISO - Фотографическая широта yyy', - 'ISOSpeedLatitudezzz' => 'ISO - Фотографическая широта zzz', - 'IT8Header' => 'IT8 Заголовок', + 'ISOSpeedLatitudeyyy' => 'ISO — Фотографическая широта yyy', + 'ISOSpeedLatitudezzz' => 'ISO — Фотографическая широта zzz', + 'IT8Header' => 'IT8-заголовок', 'Image::ExifTool::DjVu::Form' => 'Форма DjVu', 'Image::ExifTool::DjVu::Info' => 'Сведения о DjVu', - 'Image::ExifTool::DjVu::Meta' => 'DjVu метаданные', - 'Image::ExifTool::IPTC::ObjectData' => 'IPTC - Данные объекта', - 'Image::ExifTool::IPTC::PostObjectData' => 'IPTC - Данные Post объекта', - 'Image::ExifTool::IPTC::PreObjectData' => 'IPTC - Данные Pre объекта', + 'Image::ExifTool::DjVu::Meta' => 'DjVu-метаданные', + 'Image::ExifTool::IPTC::ObjectData' => 'IPTC — Данные объекта', + 'Image::ExifTool::IPTC::PostObjectData' => 'IPTC — Данные Post-объекта', + 'Image::ExifTool::IPTC::PreObjectData' => 'IPTC — Данные Pre-объекта', 'Image::ExifTool::PDF::Encrypt' => 'PDF зашифрован', - 'Image::ExifTool::PDF::Info' => 'Сведения о PDF файле', + 'Image::ExifTool::PDF::Info' => 'Сведения о PDF', 'Image::ExifTool::PDF::Pages' => 'Страниц в PDF', 'Image::ExifTool::PDF::Root' => 'Основные параметры PDF', 'Image::ExifTool::PDF::Signature' => 'Электронная подпись PDF', - 'Image::ExifTool::PDF::TransformParams' => 'Параметры изменения PDF файла', - 'ImageByteCount' => 'Размер изображения (байт)', + 'Image::ExifTool::PDF::TransformParams' => 'Параметры изменения PDF', + 'ImageByteCount' => 'Число байтов изображения', 'ImageColorIndicator' => { - Description => 'Цвет переднего плана или прозрачности', + Description => 'Указатель цвета изображения', PrintConv => { - 'Specified Image Color' => 'Указан', - 'Unspecified Image Color' => 'Не указан', + 'Specified Image Color' => 'Указанный цвет изображения', + 'Unspecified Image Color' => 'Не указанный цвет изображения', }, }, - 'ImageColorValue' => 'Значение цвета переднего плана или прозрачности', + 'ImageColorValue' => 'Значение цвета изображения', 'ImageDataDiscard' => { - Description => 'Удаленные данные из изображения после сжатия', + Description => 'Отброшенные данные изображения', PrintConv => { - 'Flexbits Discarded' => 'Удалены данные Flexbits', + 'Flexbits Discarded' => 'Гибкие биты отброшены', 'Full Resolution' => 'Полное разрешение', - 'HighPass Frequency Data Discarded' => 'Удалены данные о высоких частотах', - 'Highpass and LowPass Frequency Data Discarded' => 'Удалены данные о высоких и низких частотах', + 'HighPass Frequency Data Discarded' => 'Данные высоких частот отброшены', + 'Highpass and LowPass Frequency Data Discarded' => 'Данные высоких и низких частот отброшены', }, }, 'ImageDepth' => 'Глубина изображения', @@ -892,14 +892,14 @@ $VERSION = '1.05'; }, }, 'ImageReferencePoints' => 'Опорные точки изображения', - 'ImageSize' => '"Снимок, размер"', + 'ImageSize' => 'Размер изображения', 'ImageSourceData' => 'Исходные данные изображения', 'ImageStabilization' => { PrintConv => { 'CCD Shift' => 'Оптический стабилизатор', 'High Sensitivity' => 'Движение объекта съёмки', - 'Off' => 'Выкл', - 'Off (1)' => 'Выкл (1)', + 'Off' => 'Отключён', + 'Off (1)' => 'Отключён (1)', }, }, 'ImageType' => { @@ -930,16 +930,16 @@ $VERSION = '1.05'; 'Institution' => 'Институт', 'Instructions' => 'Инструкции', 'InterchangeColorSpace' => 'Смена цветового пространства', - 'IntergraphFlagRegisters' => 'Intergraph - Флаг регистров', - 'IntergraphMatrix' => 'Intergraph - Матрица', - 'IntergraphPacketData' => 'Intergraph - Данные пакета', + 'IntergraphFlagRegisters' => 'Intergraph — Флаг регистров', + 'IntergraphMatrix' => 'Intergraph — Матрица', + 'IntergraphPacketData' => 'Intergraph — Данные пакета', 'Interlace' => 'Чересстрочная развёртка', 'InteropIndex' => { Description => 'Индекс файловой совместимости', PrintConv => { - 'R03 - DCF option file (Adobe RGB)' => 'R03 - Альтернативный файл DCF (Adobe RGB)', - 'R98 - DCF basic file (sRGB)' => 'R98 - Основной файл DCF (sRGB)', - 'THM - DCF thumbnail file' => 'THM - Файл миниатюр DCF', + 'R03 - DCF option file (Adobe RGB)' => 'R03 — Альтернативный файл DCF (Adobe RGB)', + 'R98 - DCF basic file (sRGB)' => 'R98 — Основной файл DCF (sRGB)', + 'THM - DCF thumbnail file' => 'THM — Файл миниатюр DCF', }, }, 'InteropOffset' => 'Тэг взаимной совместимости', @@ -950,7 +950,7 @@ $VERSION = '1.05'; 'JPEGLosslessPredictors' => 'Значения предиктора JPEG без потерь', 'JPEGPointTransforms' => 'Преобразование точек JPEG', 'JPEGProc' => { - Description => 'JPEG сжатие в старом стиле ', + Description => 'JPEG-сжатие в старом стиле', PrintConv => { 'Baseline' => 'Базовое последовательное', 'Lossless' => 'Без потерь с кодированием Хаффмана', @@ -962,16 +962,16 @@ $VERSION = '1.05'; PrintConv => { 'Extra Fine' => 'Сверхвысокое', 'Fine' => 'Высокое', - 'Standard' => 'Стандартное качество', + 'Standard' => 'Стандартное', }, }, 'JPEGRestartInterval' => 'Интервал перезапуска JPEG', - 'JPEGTables' => 'JPEG таблицы', + 'JPEGTables' => 'JPEG-таблицы', 'JobID' => 'ID задания', 'Journal' => 'Журнал', - 'JpgFromRaw' => 'Jpg встроенный в Raw файл', - 'JpgFromRawLength' => 'Высота Jpeg встроенного в Raw файл', - 'JpgFromRawStart' => 'Смещение Jpeg встроенного в Raw файл', + 'JpgFromRaw' => 'JPG-файл, встроенный в RAW-файл', + 'JpgFromRawLength' => 'Высота JPG-файла, встроенного в RAW-файл', + 'JpgFromRawStart' => 'Смещение JPG-файла, встроенного в RAW-файл', 'Key' => 'Код', 'Keywords' => 'Ключевые слова', 'Language' => 'Язык', @@ -984,31 +984,31 @@ $VERSION = '1.05'; 'LightSource' => { Description => 'Тип освещения', PrintConv => { - 'Cloudy' => 'Облачно (6500К)', - 'Cool White Fluorescent' => 'Флуоресцентная лампа - Холодный свет (4150К)', - 'Day White Fluorescent' => 'Флуоресцентная лампа - Дневной белый (5050К)', - 'Daylight' => 'Дневной свет (5500К)', - 'Daylight Fluorescent' => 'Флуоресцентная лампа дневного света (6400К)', - 'Fine Weather' => 'Ясная погода (5500К)', - 'Flash' => 'Вспышка (5500К)', - 'Fluorescent' => 'Флуоресцентная лампа (4150К)', + 'Cloudy' => 'Облачно (6500 К)', + 'Cool White Fluorescent' => 'Флуоресцентная лампа — Холодный свет (4150 К)', + 'Day White Fluorescent' => 'Флуоресцентная лампа — Дневной белый (5050 К)', + 'Daylight' => 'Дневной свет (5500 К)', + 'Daylight Fluorescent' => 'Флуоресцентная лампа дневного света (6400 К)', + 'Fine Weather' => 'Ясная погода (5500 К)', + 'Flash' => 'Вспышка (5500 К)', + 'Fluorescent' => 'Флуоресцентная лампа (4150 К)', 'ISO Studio Tungsten' => 'ISO для студийных ламп накаливания', 'Other' => 'другой источник света', - 'Shade' => 'Тень (7500К)', + 'Shade' => 'Тень (7500 К)', 'Standard Light A' => 'Стандартный свет A', 'Standard Light B' => 'Стандартный свет B', 'Standard Light C' => 'Стандартный свет C', - 'Tungsten (Incandescent)' => 'Лампа накаливания (2850К)', - 'Unknown' => 'Неизвестный', - 'Warm White Fluorescent' => 'Флуоресцентная лампа - Тёплый свет (2925К)', - 'White Fluorescent' => 'Флуоресцентная лампа - Белый свет (3525К)', + 'Tungsten (Incandescent)' => 'Лампа накаливания (2850 К)', + 'Unknown' => 'Неизвестно', + 'Warm White Fluorescent' => 'Флуоресцентная лампа — Тёплый свет (2925 К)', + 'White Fluorescent' => 'Флуоресцентная лампа — Белый свет (3525 К)', }, }, 'Lightness' => 'Освещенность', 'LinearResponseLimit' => 'Предел линейного отклика', - 'LinearityLimitBlue' => 'Предел линейности - Синий', - 'LinearityLimitGreen' => 'Предел линейности - Зелёный', - 'LinearityLimitRed' => 'Предел линейности - Красный', + 'LinearityLimitBlue' => 'Предел линейности — Синий', + 'LinearityLimitGreen' => 'Предел линейности — Зелёный', + 'LinearityLimitRed' => 'Предел линейности — Красный', 'LinearizationTable' => 'Таблица линеаризации', 'Linearized' => { Description => 'Линеаризация', @@ -1018,27 +1018,27 @@ $VERSION = '1.05'; }, }, 'LocalCaption' => 'Описание места', - 'LocalizedCameraModel' => 'Локализованное имя модели камеры ', - 'Location' => 'Место съемки', + 'LocalizedCameraModel' => 'Локализованное имя модели камеры', + 'Location' => 'Место съёмки', 'LongExposureNoiseReduction' => { - Description => 'NR долгой эксп.', + Description => 'Шумоподавление при длинной выдержке', PrintConv => { 'Off' => 'Отключено', 'On' => 'Включено', }, }, 'LookupTable' => 'Таблица подстановки', - 'MDColorTable' => 'MD - Таблица цветов', - 'MDFileTag' => 'MD - Формат исходных данных', - 'MDFileUnits' => 'MD - Единицы данных файла', - 'MDLabName' => 'MD - Создатель файла', - 'MDPrepDate' => 'MD - Дата создания', - 'MDPrepTime' => 'MD - Время создания', - 'MDSampleInfo' => 'MD - Описание файла', - 'MDScalePixel' => 'MD - Коефициент масштабирования пикселя', - 'MSDocumentText' => 'MS - Текстовый документ', - 'MSDocumentTextPosition' => 'MS - Текстовый документ - Позиция', - 'MSPropertySetStorage' => 'MS - Хранилище свойств ', + 'MDColorTable' => 'MD — Таблица цветов', + 'MDFileTag' => 'MD — Формат исходных данных', + 'MDFileUnits' => 'MD — Единицы данных файла', + 'MDLabName' => 'MD — Создатель файла', + 'MDPrepDate' => 'MD — Дата создания', + 'MDPrepTime' => 'MD — Время создания', + 'MDSampleInfo' => 'MD — Описание файла', + 'MDScalePixel' => 'MD — Коефициент масштабирования пикселя', + 'MSDocumentText' => 'MS — Текстовый документ', + 'MSDocumentTextPosition' => 'MS — Текстовый документ — Позиция', + 'MSPropertySetStorage' => 'MS — Хранилище свойств', 'Make' => 'Производитель', 'MakerNote' => 'Приватные данные DNG', 'MakerNoteApple' => 'Комментарии Apple', @@ -1057,7 +1057,7 @@ $VERSION = '1.05'; 'MakerNoteHasselblad' => 'Комментарии Hasselblad', 'MakerNoteISL' => 'Комментарии ISL', 'MakerNoteJVC' => 'Комментарии JVC', - 'MakerNoteJVCText' => 'Комментарии JVC - Текст', + 'MakerNoteJVCText' => 'Комментарии JVC — Текст', 'MakerNoteKodak10' => 'Комментарии Kodak 10', 'MakerNoteKodak11' => 'Комментарии Kodak 11', 'MakerNoteKodak12' => 'Комментарии Kodak 12', @@ -1074,7 +1074,7 @@ $VERSION = '1.05'; 'MakerNoteKodak8b' => 'Комментарии Kodak 8b', 'MakerNoteKodak8c' => 'Комментарии Kodak 8c', 'MakerNoteKodak9' => 'Комментарии Kodak 9', - 'MakerNoteKodakUnknown' => 'Комментарии Kodak - Неизвестный', + 'MakerNoteKodakUnknown' => 'Комментарии Kodak — Неизвестно', 'MakerNoteKyocera' => 'Комментарии Kyocera', 'MakerNoteLeica' => 'Комментарии Leica', 'MakerNoteLeica10' => 'Комментарии Leica 10', @@ -1112,7 +1112,7 @@ $VERSION = '1.05'; 'MakerNoteRicoh' => 'Комментарии Ricoh', 'MakerNoteRicoh2' => 'Комментарии Ricoh 2', 'MakerNoteRicohPentax' => 'Комментарии Ricoh Pentax', - 'MakerNoteRicohText' => 'Комментарии Ricoh - Текст', + 'MakerNoteRicohText' => 'Комментарии Ricoh — Текст', 'MakerNoteSafety' => { Description => 'Примечания безопасности', PrintConv => { @@ -1136,13 +1136,13 @@ $VERSION = '1.05'; 'MakerNoteSonyEricsson' => 'Комментарии Sony Ericsson', 'MakerNoteSonySRF' => 'Комментарии Sony SRF', 'MakerNoteUnknown' => 'Комментарии неизвестного производителя', - 'MakerNoteUnknownBinary' => 'Комментарии неизвестного производителя - Бинарный', - 'MakerNoteUnknownText' => 'Комментарии неизвестного производителя - Текст', + 'MakerNoteUnknownBinary' => 'Комментарии неизвестного производителя — Бинарный', + 'MakerNoteUnknownText' => 'Комментарии неизвестного производителя — Текстовый', 'MakerNotes' => 'Данные производителей', 'MaskedAreas' => 'Маскированные области', 'MasterDocumentID' => 'Основной ID документа', - 'MatrixWorldToCamera' => 'Матрица Мира на Камеру', - 'MatrixWorldToScreen' => 'Матрица Мира на Экран', + 'MatrixWorldToCamera' => 'Матрица мира на камеру', + 'MatrixWorldToScreen' => 'Матрица мира на экран', 'Matteing' => 'Матирование', 'MaxAperture' => 'Макс. диафрагма объектива', 'MaxApertureValue' => 'Максимальное число диафрагмы объектива', @@ -1155,35 +1155,35 @@ $VERSION = '1.05'; PrintConv => { 'Average' => 'Усреднённый', 'Center-weighted average' => 'Центрально-взвешенный', - 'Multi-segment' => 'Оценочный / Многозонный', + 'Multi-segment' => 'Оценочный/многозонный', 'Multi-spot' => 'Многоточечный', 'Other' => 'Другой', 'Partial' => 'Частичный', 'Spot' => 'Точечный', - 'Unknown' => 'Неизвестный', + 'Unknown' => 'Неизвестно', }, }, - 'MinSampleValue' => 'Мин. значение, используемое компонентом', - 'ModeNumber' => 'Режим стандарта факс профиля', - 'Model' => 'Модель камеры', + 'MinSampleValue' => 'Минимальное значение образца', + 'ModeNumber' => 'Номер режима', + 'Model' => 'Модель', 'Model2' => 'Модель 2', 'ModelTiePoint' => 'Пространственная привязка', 'ModelTransform' => 'Модель преобразования', 'ModificationPermissions' => { - Description => 'Разрешения на Редактирование', + Description => 'Разрешения на редактирование', PrintConv => { 'Do not restrict applications to reader permissions' => 'Не ограничивать всем приложениям права на чтение', - 'Fill forms, Create page templates, Sign' => 'Разрешается: Заполнение форм, Создание шаблонов страниц, Электронная подпись', - 'Fill forms, Create page templates, Sign, Create/Delete/Edit annotations' => 'Разрешается: Заполнение форм, Создание шаблонов страниц, Электронная подпись, Создание / Удаление / Редактирование аннотаций', + 'Fill forms, Create page templates, Sign' => 'Заполнение форм, создание шаблонов страниц, электронная подпись', + 'Fill forms, Create page templates, Sign, Create/Delete/Edit annotations' => 'Заполнение форм, создание шаблонов страниц, электронная подпись, создание/удаление/редактирование примечаний', 'No changes permitted' => 'Редактирование запрещено', 'Restrict all applications to reader permissions' => 'Ограничивать всем приложениям права на чтение', }, }, 'ModifyDate' => 'Дата редактирования', - 'MoireFilter' => 'Фильтр Муар', + 'MoireFilter' => 'Фильтр муара', 'Month' => 'Месяц', 'MultiFrameNoiseReduction' => { - Description => 'Многокадр. шумоподавл.', + Description => 'Многокадровое шумоподавление', PrintConv => { 'Off' => 'Отключено', 'On' => 'Включено', @@ -1201,18 +1201,24 @@ $VERSION = '1.05'; 'Profile M' => 'Профиль M', 'Profile S' => 'Профиль S', 'Profile T' => 'Профиль T', - 'Resolution/Image Width' => 'Разрешение/Ширина изображения', + 'Resolution/Image Width' => 'Разрешение/ширина изображения', 'Shared Data' => 'Общие данные', }, }, - 'Multishot' => 'Мультишот', - 'NewRawImageDigest' => 'RAW - Хеш-сумма изображения в новом формате', - 'NewsPhotoVersion' => 'Версия News Photo', - 'Noise' => 'Уровень шума', - 'NoiseProfile' => 'Профиль - Уровень шума', + 'Multishot' => { + Description => 'Мультисъёмка', + PrintConv => { + 'Off' => 'Отключена', + 'Pixel Shift' => 'Сдвиг пикселей', + }, + }, + 'NewRawImageDigest' => 'Новый обзор RAW-изображения', + 'NewsPhotoVersion' => 'Версия фоторепортажа', + 'Noise' => 'Шум', + 'NoiseProfile' => 'Профиль шума', 'NoiseReduction' => 'Шумоподавление', - 'NoiseReductionApplied' => 'Применённый шумодав', - 'NoiseReductionParams' => 'Параметры шумодава', + 'NoiseReductionApplied' => 'Прилагаемое шумоподавление', + 'NoiseReductionParams' => 'Параметры шумоподавления', 'Note' => 'Заметка', 'NumIndexEntries' => 'Количество индексов', 'Number' => 'Номер', @@ -1220,8 +1226,8 @@ $VERSION = '1.05'; 'OPIProxy' => { Description => 'Подстановка изображения', PrintConv => { - 'Higher resolution image does not exist' => 'Изображение большего разрешения нет', - 'Higher resolution image exists' => 'Есть изображение с большим разрешением', + 'Higher resolution image does not exist' => 'Изображение большего разрешения отсутствует', + 'Higher resolution image exists' => 'Изображение большего разрешения присутствует', }, }, 'ObjectAttributeReference' => 'Ссылка на атрибут объекта', @@ -1234,24 +1240,25 @@ $VERSION = '1.05'; }, }, 'ObjectName' => 'Заголовок объекта', - 'ObjectPreviewData' => 'Object Preview - Данные', - 'ObjectPreviewFileFormat' => 'Object Preview - Формат файла', - 'ObjectPreviewFileVersion' => 'Object Preview - Версия', + 'ObjectPreviewData' => 'Данные предпросмотра объекта', + 'ObjectPreviewFileFormat' => 'Формат файла предпросмотра объекта', + 'ObjectPreviewFileVersion' => 'Версия файла предпросмотра объекта', 'ObjectSizeAnnounced' => 'Заявленный размер объекта', 'ObjectTypeReference' => 'Ссылка на тип объекта', - 'OceApplicationSelector' => 'Oce - Приложение', - 'OceIDNumber' => 'Oce - ID номер', - 'OceScanjobDesc' => 'Oce - Scanticket использованный при сканировании', + 'OceApplicationSelector' => 'Задатчик приложения Oce', + 'OceIDNumber' => 'ID-номер Oce', + 'OceImageLogic' => 'Логика изображения Oce', + 'OceScanjobDesc' => 'Описание задания сканирования Oce', 'OffsetSchema' => 'Схема смещения', 'OffsetTime' => 'Смещение времени', 'OffsetTimeDigitized' => 'Смещения времени создания файла', 'OffsetTimeOriginal' => 'Смещение времени съёмки', 'OldSubfileType' => { - Description => 'Тип данных (старый)', + Description => 'Старый подтип файла', PrintConv => { 'Full-resolution image' => 'Изображение с полным разрешением', 'Reduced-resolution image' => 'Изображение с пониженным разрешением', - 'Single page of multi-page image' => 'Страница из многостраничного изображения', + 'Single page of multi-page image' => 'Одна страница многостраничного изображения', }, }, 'OpcodeList1' => 'Список кодов операций обработки изображений 1', @@ -1262,11 +1269,11 @@ $VERSION = '1.05'; 'Orientation' => { Description => 'Ориентация', PrintConv => { - 'Horizontal (normal)' => 'Горизонтальная', - 'Mirror horizontal' => 'Зеркало по горизонтали', - 'Mirror horizontal and rotate 270 CW' => 'Зеркало по горизонтали и поворот на 270° по часовой стрелке', - 'Mirror horizontal and rotate 90 CW' => 'Зеркало по горизонтали и поворот на 90° по часовой стрелке', - 'Mirror vertical' => 'Зеркало по вертикали', + 'Horizontal (normal)' => 'Горизонтальная (обычная)', + 'Mirror horizontal' => 'Отражение по горизонтали', + 'Mirror horizontal and rotate 270 CW' => 'Отражение по горизонтали и поворот на 270° по часовой стрелке', + 'Mirror horizontal and rotate 90 CW' => 'Отражение по горизонтали и поворот на 90° по часовой стрелке', + 'Mirror vertical' => 'Отражение по вертикали', 'Rotate 180' => 'Поворот на 180°', 'Rotate 270 CW' => 'Поворот на 270° по часовой стрелке', 'Rotate 90 CW' => 'Поворот на 90° по часовой стрелке', @@ -1276,9 +1283,9 @@ $VERSION = '1.05'; 'OriginalDefaultCropSize' => 'Исходный размер кропнутого изображения', 'OriginalDefaultFinalSize' => 'Полный размер исходного изображения', 'OriginalFileName' => 'Исходное имя файла', - 'OriginalRawFileData' => 'Исходные данные Raw файла', - 'OriginalRawFileDigest' => 'RAW - Хеш-сумма исходного файла', - 'OriginalRawFileName' => 'Исходное имя Raw файла', + 'OriginalRawFileData' => 'Исходные данные RAW-файла', + 'OriginalRawFileDigest' => 'Исходный обзор RAW-файла', + 'OriginalRawFileName' => 'Исходное имя RAW-файла', 'OriginalTransmissionReference' => 'Исходная ссылка на передачу', 'OriginatingProgram' => 'Приложение', 'OtherImage' => 'Другое изображение', @@ -1294,78 +1301,82 @@ $VERSION = '1.05'; 'PageName' => 'Название страницы', 'PageNumber' => 'Номер страницы', 'Pages' => 'Страниц', - 'PanasonicRawVersion' => 'Версия Panasonic Raw', - 'PanasonicTitle' => 'Panasonic - Название', - 'PanasonicTitle2' => 'Panasonic - Название 2', + 'PanasonicRawVersion' => 'Panasonic — Версия RAW', + 'PanasonicTitle' => 'Panasonic — Название', + 'PanasonicTitle2' => 'Panasonic — Название 2', 'PhotometricInterpretation' => { Description => 'Цветовая модель', PrintConv => { + 'Color Filter Array' => 'Массив цветных фильтров', + 'Linear Raw' => 'Линейный RAW', 'RGB Palette' => 'Палитра RGB', + 'Sequential Color Filter' => 'Последовательный цветной фильтр', 'Transparency Mask' => 'Маска прозрачности', + 'WhiteIsZero' => 'Белый — ноль', }, }, 'PixelFormat' => { Description => 'Формат пикселя', PrintConv => { - '112-bit 6 Channels Alpha' => '112 бит 6 альфаканалов', - '112-bit 7 Channels' => '112 бит 7 канаов', - '128-bit 7 Channels Alpha' => '128 бит 7 альфаканалов', - '128-bit 8 Channels' => '128 бит 8 канаов', - '128-bit PRGBA Float' => '128 бит PRGBA Float', - '128-bit RGB Float' => '128 бит RGB Float', - '128-bit RGBA Fixed Point' => '128 бит RGBA Fixed Point', - '128-bit RGBA Float' => '128 бит RGBA Float', - '144-bit 8 Channels Alpha' => '144 бита 8 альфаканалов', - '16-bit BGR555' => '16 бит BGR555', - '16-bit BGR565' => '16 бит BGR565', - '16-bit Gray' => '16 бит Градаций серого', - '16-bit Gray Half' => '16 бит Градаций серого Half', - '24-bit 3 Channels' => '24 бита 3 канала', - '24-bit BGR' => '24 бита BGR', - '24-bit RGB' => '24 бита RGB', - '32-bit 3 Channels Alpha' => '32 бита 3 альфаканала', - '32-bit 4 Channels' => '32 бита 4 канала', - '32-bit BGR' => '32 бита BGR', - '32-bit BGR101010' => '32 бита BGR101010', - '32-bit BGRA' => '32 бита BGRA', - '32-bit CMYK' => '32 бита CMYK', - '32-bit Gray Fixed Point' => '32 бит Градаций серого Fixed Point', - '32-bit Gray Float' => '32 бита Градаций серого Float', - '32-bit PBGRA' => '32 бита PBGRA', - '32-bit RGBE' => '32 бит RGBE', - '40-bit 4 Channels Alpha' => '40 бит 4 альфаканала', - '40-bit 5 Channels' => '40 бит 5 каналов', - '40-bit CMYK Alpha' => '40 бит CMYK Альфаканал', - '48-bit 3 Channels' => '48 бит 3 канала', - '48-bit 5 Channels Alpha' => '48 бит 5 альфаканалов', - '48-bit 6 Channels' => '48 бит 6 каналов', - '48-bit RGB' => '48 бит RGB', - '48-bit RGB Fixed Point' => '48 бит RGB Fixed Point', - '48-bit RGB Half' => '48 бит RGB Half', - '56-bit 6 Channels Alpha' => '56 бит 6 альфаканалов', - '56-bit 7 Channels' => '56 бит 7 каналов', - '64-bit 3 Channels Alpha' => '64 бит 3 альфаканала', - '64-bit 4 Channels' => '64 бит 4 канала', - '64-bit 7 Channels Alpha' => '64 бит 7 альфаканалов', - '64-bit 8 Channels' => '64 бит 8 каналов', - '64-bit CMYK' => '64 бит CMYK', - '64-bit PRGBA' => '64 бит PRGBA', - '64-bit RGBA' => '64 бит RGBA', - '64-bit RGBA Fixed Point' => '64 бит RGBA Fixed Point', - '64-bit RGBA Half' => '64 бит RGBA Half', - '72-bit 8 Channels Alpha' => '72 бита 8 альфаканалов', - '8-bit Gray' => '8 бит Градаций серого', - '80-bit 4 Channels Alpha' => '80 бит 4 альфаканала', - '80-bit 5 Channels' => '80 бит 5 канаов', - '80-bit CMYK Alpha' => '80 бит CMYK Альфаканал', - '96-bit 5 Channels Alpha' => '96 бит 5 альфаканалов', - '96-bit 6 Channels' => '96 бит 6 канаов', - '96-bit RGB Fixed Point' => '96 бит RGB Fixed Point', - 'Black & White' => 'Черно-Белый', - }, - }, - 'PixelIntensityRange' => 'Диапазон интенсивности пикселей (%)', - 'PixelMagicJBIGOptions' => 'Pixel Magic - Параметры JBIG', + '112-bit 6 Channels Alpha' => '112-битный, 6 каналов, альфа-канал', + '112-bit 7 Channels' => '112-битный, 7 каналов', + '128-bit 7 Channels Alpha' => '128-битный, 7 каналов, альфа-канал', + '128-bit 8 Channels' => '128-битный, 8 каналов', + '128-bit PRGBA Float' => '128-битный, PRGBA с плавающей точкой', + '128-bit RGB Float' => '128-битный, RGB с плавающей точкой', + '128-bit RGBA Fixed Point' => '128-битный, RGBA с фиксированной точкой', + '128-bit RGBA Float' => '128-битный, RGBA с плавающей точкой', + '144-bit 8 Channels Alpha' => '144-битный, 8 каналов, альфа-канал', + '16-bit BGR555' => '16-битный, BGR555', + '16-bit BGR565' => '16-битный, BGR565', + '16-bit Gray' => '16-битный, серый', + '16-bit Gray Half' => '16-битный, половина серого', + '24-bit 3 Channels' => '24-битный, 3 канала', + '24-bit BGR' => '24-битный, BGR', + '24-bit RGB' => '24-битный, RGB', + '32-bit 3 Channels Alpha' => '32-битный, 3 канала, альфа-канал', + '32-bit 4 Channels' => '32-битный, 4 канала', + '32-bit BGR' => '32-битный, BGR', + '32-bit BGR101010' => '32-битный, BGR101010', + '32-bit BGRA' => '32-битный, BGRA', + '32-bit CMYK' => '32-битный, CMYK', + '32-bit Gray Fixed Point' => '32-битный, серый с фиксированной точкой', + '32-bit Gray Float' => '32-битный, серый с плавающей точкой', + '32-bit PBGRA' => '32-битный, PBGRA', + '32-bit RGBE' => '32-битный, RGBE', + '40-bit 4 Channels Alpha' => '40-битный, 4 канала, альфа-канал', + '40-bit 5 Channels' => '40-битный, 5 каналов', + '40-bit CMYK Alpha' => '40-битный, CMYK, альфа-канал', + '48-bit 3 Channels' => '48-битный, 3 канала', + '48-bit 5 Channels Alpha' => '48-битный, 5 каналов, альфа-канал', + '48-bit 6 Channels' => '48-битный, 6 каналов', + '48-bit RGB' => '48-битный, RGB', + '48-bit RGB Fixed Point' => '48-битный, RGB с фиксированной точкой', + '48-bit RGB Half' => '48-битный, RGB Half', + '56-bit 6 Channels Alpha' => '56-битный, 6 каналов, альфа-канал', + '56-bit 7 Channels' => '56-битный, 7 каналов', + '64-bit 3 Channels Alpha' => '64-битный, 3 канала, альфа-канал', + '64-bit 4 Channels' => '64-битный, 4 канала', + '64-bit 7 Channels Alpha' => '64-битный, 7 каналов, альфа-канал', + '64-bit 8 Channels' => '64-битный, 8 каналов', + '64-bit CMYK' => '64-битный, CMYK', + '64-bit PRGBA' => '64-битный, PRGBA', + '64-bit RGBA' => '64-битный, RGBA', + '64-bit RGBA Fixed Point' => '64-битный, RGBA с фиксированной точкой', + '64-bit RGBA Half' => '64-битный, RGBA Half', + '72-bit 8 Channels Alpha' => '72-битный, 8 каналов, альфа-канал', + '8-bit Gray' => '8-битный, Градаций серого', + '80-bit 4 Channels Alpha' => '80-битный, 4 канала, альфа-канал', + '80-bit 5 Channels' => '80-битный, 5 канаов', + '80-bit CMYK Alpha' => '80-битный, CMYK, альфа-канал', + '96-bit 5 Channels Alpha' => '96-битный, 5 каналов, альфа-канал', + '96-bit 6 Channels' => '96-битный, 6 канаов', + '96-bit RGB Fixed Point' => '96-битный, RGB с фиксированной точкой', + 'Black & White' => 'Чёрно-белый', + }, + }, + 'PixelIntensityRange' => 'Диапазон интенсивности пикселей (%)', + 'PixelMagicJBIGOptions' => 'Pixel Magic — Параметры JBIG', 'PixelScale' => 'Масштаб пикселя', 'PlanarConfiguration' => { Description => 'Принцип организации данных', @@ -1375,36 +1386,37 @@ $VERSION = '1.05'; }, }, 'Predictor' => { - Description => 'Предиктор', + Description => 'Предсказатель', PrintConv => { 'Horizontal differencing' => 'Горизонтальное дифференцирование', - 'None' => 'Не использовался', + 'None' => 'Никакой', }, }, 'Prefs' => 'Настройки', 'Pressure' => 'Давление', - 'PreviewApplicationName' => 'Файл предпросмотра - Название приложения', - 'PreviewApplicationVersion' => 'Файл предпросмотра - Версия приложения', + 'PreviewApplicationName' => 'Название приложения предпросмотра', + 'PreviewApplicationVersion' => 'Версия приложения предпросмотра', 'PreviewColorSpace' => { - Description => 'Файл предпросмотра - Цветовое пространство', + Description => 'Цветовое пространство предпросмотра', PrintConv => { 'Unknown' => 'Неизвестно', }, }, - 'PreviewDateTime' => 'Файл предпросмотра - Дата и Время', + 'PreviewDateTime' => 'Дата и время файла предпросмотра', 'PreviewImage' => 'Файл предпросмотра', 'PreviewImageLength' => 'Высота файла предпросмотра', 'PreviewImageStart' => 'Смещение файла предпросмотра', - 'PreviewSettingsDigest' => 'Файл предпросмотра - Идентификатор параметров преобразования', - 'PreviewSettingsName' => 'Файл предпросмотра - Название параметров преобразования', - 'PrimaryChromaticities' => 'Цветность основных цветов', - 'ProcessingSoftware' => 'Редактировано в приложении', - 'Producer' => 'Преобразован/Редактирован в', + 'PreviewSettingsDigest' => 'Обзор настроек файла предпросмотра', + 'PreviewSettingsName' => 'Название параметров файла предпросмотра', + 'PrimaryChromaticities' => 'Первичные цветности', + 'PrintIM' => 'Распечатать IM', + 'ProcessingSoftware' => 'Приложение редактирования', + 'Producer' => 'Продюсер', 'ProductID' => 'ID продукта', 'ProfileCalibrationSig' => 'Сигнатура калибровки профиля', - 'ProfileCopyright' => 'Профиль - Авторское право', + 'ProfileCopyright' => 'Авторское право профиля', 'ProfileEmbedPolicy' => { - Description => 'Профиль - Политика внедрения', + Description => 'Политика внедрения профиля', PrintConv => { 'Allow Copying' => 'Разрешено копирование', 'Embed if Used' => 'Внедрить если используется', @@ -1412,44 +1424,44 @@ $VERSION = '1.05'; 'No Restrictions' => 'Без ограничений', }, }, - 'ProfileHueSatMapData1' => 'Профиль - Карта оттенков/насыщенности - Данные 1', - 'ProfileHueSatMapData2' => 'Профиль - Карта оттенков/насыщенности - Данные 2', - 'ProfileHueSatMapDims' => 'Профиль - Карта оттенков/насыщенности - Dims', + 'ProfileHueSatMapData1' => 'Профиль — Карта оттенков/насыщенности — Данные 1', + 'ProfileHueSatMapData2' => 'Профиль — Карта оттенков/насыщенности — Данные 2', + 'ProfileHueSatMapDims' => 'Профиль — Карта оттенков/насыщенности — Потускнение', 'ProfileHueSatMapEncoding' => { - Description => 'Профиль - Карта оттенков/насыщенности - Кодирование', + Description => 'Профиль — Карта оттенков/насыщенности — Кодирование', PrintConv => { 'Linear' => 'Линейное', }, }, - 'ProfileLookTableData' => 'Профиль - Look таблица - Данные', - 'ProfileLookTableDims' => 'Профиль - Look таблица - Dims', + 'ProfileLookTableData' => 'Профиль — Таблица поиска — Данные', + 'ProfileLookTableDims' => 'Профиль — Таблица поиска — Потускнение', 'ProfileLookTableEncoding' => { - Description => 'Профиль - Look таблица - Кодирование', + Description => 'Профиль — Таблица поиска — Кодирование', PrintConv => { 'Linear' => 'Линейное', }, }, 'ProfileName' => 'Название профиля', - 'ProfileToneCurve' => 'Профиль - Тоновая кривая', + 'ProfileToneCurve' => 'Профиль — Тоновая кривая', 'ProfileType' => { Description => 'Тип профиля', PrintConv => { + 'Group 3 FAX' => 'Группа 3 FAX', 'Unspecified' => 'Не указан', }, }, - 'ProgramVersion' => 'Версия приложения', + 'ProgramVersion' => 'Версия программы', 'Province-State' => 'Область/район', 'Publisher' => 'Издатель', 'Quality' => { - Description => 'Качество изображения', + Description => 'Качество', PrintConv => { - 'Compressed RAW' => 'cRAW', - 'Compressed RAW + JPEG' => 'cRAW+JPEG', + 'Compressed RAW' => 'Сжатый RAW', + 'Compressed RAW + JPEG' => 'Сжатый RAW + JPEG', 'Extra Fine' => 'Сверхвысокое', 'Fine' => 'Высокое', - 'Low' => 'Низкое качество', - 'Normal' => 'Стандартное качество', - 'RAW + JPEG' => 'RAW+JPEG', + 'Low' => 'Низкое', + 'Normal' => 'Обычное', 'Standard' => 'Стандартное', }, }, @@ -1460,7 +1472,7 @@ $VERSION = '1.05'; 'Compression Method Specific' => 'Специфичный метод сжатия', 'Gamma Compensated' => 'Компенсация гаммы', 'Linear Density' => 'Линейная плотность', - 'Linear Reflectance/Transmittance' => 'Линейное Отражение/Пропускание', + 'Linear Reflectance/Transmittance' => 'Линейное отражение/пропускание', }, }, 'RasterPadding' => { @@ -1473,23 +1485,23 @@ $VERSION = '1.05'; 'Word' => 'Слово', }, }, - 'RasterizedCaption' => 'Растрированное описание', + 'RasterizedCaption' => 'Растрированная подпись', 'Rating' => 'Рейтинг', - 'RatingPercent' => 'Рейтинг (%)', - 'RawDataOffset' => 'Смещение данных Raw', - 'RawDataUniqueID' => 'Raw - Уникальный ID файла', - 'RawFile' => 'Raw файл', - 'RawFormat' => 'Raw формат', - 'RawImageDigest' => 'RAW - Хеш-сумма изображения', - 'RawImageSegmentation' => 'Raw - Сегментация изображения', - 'RawToPreviewGain' => 'Коэффициент увеличения между Raw и файлом предпросмотра', + 'RatingPercent' => 'Проценты рейтинга', + 'RawDataOffset' => 'Смещение RAW-данных', + 'RawDataUniqueID' => 'Уникальный ID RAW-данных', + 'RawFile' => 'RAW-файл', + 'RawFormat' => 'RAW-формат', + 'RawImageDigest' => 'Обзор RAW-изображения', + 'RawImageSegmentation' => 'Сегментация RAW-изображения', + 'RawToPreviewGain' => 'Коэффициент увеличения между RAW и файлом предпросмотра', 'RecommendedExposureIndex' => 'Рекомендуемый индекс экспозиции', 'RecordMode' => 'Режим записи', 'RedBalance' => 'Баланс красного', - 'ReductionMatrix1' => 'Матрица редукции №1', - 'ReductionMatrix2' => 'Матрица редукции №2', + 'ReductionMatrix1' => 'Матрица редукции 1', + 'ReductionMatrix2' => 'Матрица редукции 2', 'ReelName' => 'Название носителя информации', - 'ReferenceBlackWhite' => 'Исходные значения черного и белого', + 'ReferenceBlackWhite' => 'Исходные значения чёрного и белого', 'ReferenceDate' => 'Дата предыдущего конверта', 'ReferenceNumber' => 'Номер предыдущего конверта', 'ReferenceService' => 'Ссылка на предыдущий конверт', @@ -1503,18 +1515,18 @@ $VERSION = '1.05'; 'ResolutionUnit' => { Description => 'Единицы разрешения по X и Y', PrintConv => { - 'None' => 'Не указано', - 'cm' => 'см.', + 'None' => 'Никакие', + 'cm' => 'см', 'inches' => 'дюймы', }, }, 'RoundTripVersion' => 'Версия Round Trip', 'RowInterleaveFactor' => 'Коэффициент чередования строк', 'RowsPerStrip' => 'Количество строк на полосу', - 'SEMInfo' => 'SEM - Описание', - 'SMaxSampleValue' => 'Макс. значение компонента', - 'SMinSampleValue' => 'Мин. значение компонента', - 'SRawType' => 'SRaw - Тип', + 'SEMInfo' => 'Информация о SEM', + 'SMaxSampleValue' => 'Максимальное значение компонента', + 'SMinSampleValue' => 'Минимальное значение компонента', + 'SRawType' => 'Тип SRaw', 'SampleFormat' => { Description => 'Формат компонента', PrintConv => { @@ -1535,16 +1547,16 @@ $VERSION = '1.05'; }, }, 'SamplesPerPixel' => 'Количество компонентов на пиксель', - 'SamsungRawByteOrder' => 'Samsung Raw - Порядок байтов', - 'SamsungRawPointersLength' => 'Samsung Raw - Длина указателей', - 'SamsungRawPointersOffset' => 'Samsung Raw - Смещение указателей', - 'SamsungRawUnknown' => 'Samsung Raw - Неизвестный ', + 'SamsungRawByteOrder' => 'Samsung RAW — Порядок байтов', + 'SamsungRawPointersLength' => 'Samsung RAW — Длина указателей', + 'SamsungRawPointersOffset' => 'Samsung RAW — Смещение указателей', + 'SamsungRawUnknown' => 'Samsung RAW — Неизвестно', 'Saturation' => { Description => 'Насыщенность', PrintConv => { 'High' => 'Высокая', 'Low' => 'Низкая', - 'Normal' => 'Стандартная', + 'Normal' => 'Обычная', }, }, 'ScanningDirection' => { @@ -1564,27 +1576,27 @@ $VERSION = '1.05'; Description => 'Тип снимаемой сцены', PrintConv => { 'Landscape' => 'Пейзаж', - 'Night' => 'Ночная съёмка', - 'Other' => 'Другой режим', + 'Night' => 'Ночь', + 'Other' => 'Другой', 'Portrait' => 'Портрет', - 'Standard' => 'Стандартный режим', + 'Standard' => 'Стандартный', }, }, 'SceneMode' => { Description => 'Выбор сцены', PrintConv => { '3D Sweep Panorama' => '3D', - 'Anti Motion Blur' => 'Устр. размыт. движ.', - 'Auto' => 'Авто', - 'Cont. Priority AE' => 'Непрер. приор. АЭ', + 'Anti Motion Blur' => 'Противоразмытие движения', + 'Auto' => 'Автоматический', + 'Cont. Priority AE' => 'Непрерывный приоритет AE', 'Handheld Night Shot' => 'Ночная съемка с рук', 'Landscape' => 'Пейзаж', - 'Macro' => 'Макросъёмка', + 'Macro' => 'Макро', 'Night Portrait' => 'Ночной портрет', - 'Night Scene' => 'Ночной вид', + 'Night Scene' => 'Ночная сцена', 'Night View/Portrait' => 'Ночной вид/портрет', 'Portrait' => 'Портрет', - 'Sports' => 'Спортивные сцены', + 'Sports' => 'Спортивная', 'Sunset' => 'Закат', 'Sweep Panorama' => 'Панорамный обзор', }, @@ -1592,7 +1604,7 @@ $VERSION = '1.05'; 'SceneType' => { Description => 'Тип сцены', PrintConv => { - 'Directly photographed' => 'Сфотографировано цифровой камерой', + 'Directly photographed' => 'Непосредственно сфотографированная', }, }, 'School' => 'Школа', @@ -1631,7 +1643,7 @@ $VERSION = '1.05'; 'Standard Output Sensitivity and ISO Speed' => 'Стандартная выходная чувствительность и ISO', 'Standard Output Sensitivity and Recommended Exposure Index' => 'Стандартная выходная чувствительность и рекомендуемый индекс экспозиции', 'Standard Output Sensitivity, Recommended Exposure Index and ISO Speed' => 'Стандартная выходная чувствительность и рекомендуемый индекс экспозиции и ISO', - 'Unknown' => 'Неизвестный', + 'Unknown' => 'Неизвестно', }, }, 'SensorBottomBorder' => 'Нижняя граница матрицы', @@ -1640,9 +1652,9 @@ $VERSION = '1.05'; 'SensorRightBorder' => 'Правая граница матрицы', 'SensorTopBorder' => 'Верхняя граница матрицы', 'SensorWidth' => 'Ширина матрицы', - 'SerialNumber' => 'Серийный номер камеры', + 'SerialNumber' => 'Серийный номер', 'Series' => 'Серия', - 'ServiceIdentifier' => 'Идентификатор поставщика и продукта', + 'ServiceIdentifier' => 'Сервисный идентификатор', 'ShadingCompensation' => 'Устранение теней', 'ShadowScale' => 'Диапазон теней', 'Shadows' => 'Тени', @@ -1651,43 +1663,43 @@ $VERSION = '1.05'; Description => 'Резкость', PrintConv => { 'Hard' => 'Сильная', - 'Normal' => 'Стандартная', + 'Normal' => 'Обычная', 'Soft' => 'Слабая', }, }, - 'ShootingMode' => 'Режим съемки', - 'ShortDocumentID' => 'Краткий ID документа ', + 'ShootingMode' => 'Режим съёмки', + 'ShortDocumentID' => 'Краткий ID документа', 'ShutterSpeed' => 'Выдержка', - 'ShutterSpeedValue' => 'Выдержка', - 'SignatureUsageRights' => 'Права на использование Подписи', - 'SignerContactInfo' => 'Электронная подпись - Контактная информация', - 'SigningAuthority' => 'Электронная подпись - Орган', - 'SigningDate' => 'Электронная подпись - Дата подписи', - 'SigningLocation' => 'Электронная подпись - Местоположение', - 'SigningReason' => 'Электронная подпись - Причина подписания', + 'ShutterSpeedValue' => 'Значение выдержки', + 'SignatureUsageRights' => 'Права на использование подписи', + 'SignerContactInfo' => 'Контактная информация подписавшего', + 'SigningAuthority' => 'Полномочия подписания', + 'SigningDate' => 'Дата подписания', + 'SigningLocation' => 'Место подписания', + 'SigningReason' => 'Причина подписания', 'SimilarityIndex' => 'Индекс сходства', 'Site' => 'Сайт', 'SizeMode' => { Description => 'Режим размера', PrintConv => { - 'Size Known' => 'Размер известный', + 'Size Known' => 'Размер известен', 'Size Not Known' => 'Размер не известен', }, }, 'Smoothness' => 'Сглаживание', - 'Software' => 'Создано/Редактировано в приложении', - 'SonyCropSize' => 'Sony - Размер рамки кадрирования', - 'SonyCropTopLeft' => 'Sony - Верхний левый угол рамки кадрирования', + 'Software' => 'Приложение', + 'SonyCropSize' => 'Sony — Размер рамки кадрирования', + 'SonyCropTopLeft' => 'Sony — Верхний левый угол рамки кадрирования', 'SonyRawFileType' => { - Description => 'Sony Raw - Тип файла ', + Description => 'Sony — Тип RAW-файла', PrintConv => { - 'Sony Compressed RAW' => 'Sony RAW сжатый', - 'Sony Lossless Compressed RAW' => 'Sony RAW сжатый без потерь', - 'Sony Uncompressed 12-bit RAW' => 'Sony 12-bit RAW несжатый', - 'Sony Uncompressed 14-bit RAW' => 'Sony 14-bit RAW несжатый', + 'Sony Compressed RAW' => 'Sony — сжатый RAW', + 'Sony Lossless Compressed RAW' => 'Sony — сжатый без потерь RAW', + 'Sony Uncompressed 12-bit RAW' => 'Sony — 12-битный несжатый RAW', + 'Sony Uncompressed 14-bit RAW' => 'Sony — 14-битный несжатый RAW', }, }, - 'SonyToneCurve' => 'Sony - Тоновая кривая', + 'SonyToneCurve' => 'Sony — Тоновая кривая', 'Source' => 'Источник', 'SpatialFrequencyResponse' => 'Отклик пространственной частоты', 'SpatialResolution' => 'Пространственное разрешение', @@ -1695,8 +1707,8 @@ $VERSION = '1.05'; 'SpectralSensitivity' => 'Спектральная чувствительность', 'StandardOutputSensitivity' => 'Стандартная выходная чувствительность', 'State' => 'Область', - 'StoNits' => 'Освещенность (Коэффициент пересчета кд/м.2 )', - 'StripByteCounts' => 'Кол-во байт на полосу после сжатия', + 'StoNits' => 'Освещенность (коэффициент пересчета кд/м2)', + 'StripByteCounts' => 'Количество байт на полосу после сжатия', 'StripOffsets' => 'Смещение изображения', 'StripRowCounts' => 'Количество полос', 'Sub-location' => 'Местоположение в городе', @@ -1704,7 +1716,7 @@ $VERSION = '1.05'; 'SubSecTime' => 'Дата, время и субсекунды', 'SubSecTimeDigitized' => 'Дата, время и субсекунды создания файла', 'SubSecTimeOriginal' => 'Дата, время и субсекунды съёмки', - 'SubTileBlockSize' => 'Sub Tile - Размер блока', + 'SubTileBlockSize' => 'Размер блока подзаголовка', 'SubfileType' => { Description => 'Тип подфайла', PrintConv => { @@ -1732,10 +1744,10 @@ $VERSION = '1.05'; 'SubjectArea' => 'Область объекта', 'SubjectDistance' => 'Дистанция к фокусируемому объекту', 'SubjectDistanceRange' => { - Description => 'Расстояние к снимаемому объекту', + Description => 'Расстояние до снимаемого объекта', PrintConv => { 'Close' => 'Съёмка с близкого расстояния', - 'Distant' => 'Съёмка с дальнего расстояния', + 'Distant' => 'Съёмка с дальнего расстояния', 'Macro' => 'Макро съёмка', 'Unknown' => 'Неизвестно', }, @@ -1768,13 +1780,13 @@ $VERSION = '1.05'; }, 'T82Options' => 'Параметры T82', 'T88Options' => 'Параметры T88', - 'TIFF-EPStandardID' => 'TIFF-EP - ID стандарта', + 'TIFF-EPStandardID' => 'ID стандарта TIFF-EP', 'TIFF_FXExtensions' => { - Description => 'TIFF FX разширения', + Description => 'Разширения TIFF_FX', PrintConv => { 'JBIG2 Profile M' => 'JBIG2 профиль M', 'N Layer Profile M' => 'N слой Профиль M', - 'Resolution/Image Width' => 'Разрешение/Ширина изображения', + 'Resolution/Image Width' => 'Разрешение/ширина изображения', 'Shared Data' => 'Общие данные', }, }, @@ -1791,9 +1803,9 @@ $VERSION = '1.05'; 'Thresholding' => { Description => 'Пороговая обработка', PrintConv => { - 'No dithering or halftoning' => 'Дизеринг (псевдотонирование) или полутонирование не применялось', - 'Ordered dither or halftone' => 'Дизеринг (псевдотонирование) или полутонирование', - 'Randomized dither' => 'Рандомизированный дизеринг (псевдотонирование)', + 'No dithering or halftoning' => 'Нет дизеринга или полутонирования', + 'Ordered dither or halftone' => 'Заказной дизеринг или полутонирование', + 'Randomized dither' => 'Случайностный дизеринг', }, }, 'ThumbnailImage' => 'Миниатюра изображения', @@ -1815,10 +1827,10 @@ $VERSION = '1.05'; 'Transformation' => { Description => 'Трансформация', PrintConv => { - 'Horizontal (normal)' => 'Горизонтально', + 'Horizontal (normal)' => 'Горизонтально (обычно)', 'Mirror horizontal' => 'Отразить по горизонтали', - 'Mirror horizontal and rotate 270 CW' => 'Зеркало по горизонтали и поворот на 270° по часовой стрелке', - 'Mirror horizontal and rotate 90 CW' => 'Зеркало по горизонтали и поворот на 90° по часовой стрелке', + 'Mirror horizontal and rotate 270 CW' => 'Отражение по горизонтали и поворот на 270° по часовой стрелке', + 'Mirror horizontal and rotate 90 CW' => 'Отражение по горизонтали и поворот на 90° по часовой стрелке', 'Mirror vertical' => 'Отразить по вертикали', 'Rotate 180' => 'Повернуть на 180°', 'Rotate 270 CW' => 'Поворот на 270° по часовой стрелке', @@ -1826,16 +1838,17 @@ $VERSION = '1.05'; }, }, 'TransmissionReference' => 'Ссылка на источник', - 'TransparencyIndicator' => 'Наличие прозрачности', - 'TrapIndicator' => 'Применен ли треппинг к файлу', + 'TransparencyIndicator' => 'Показатель прозрачности', + 'TrapIndicator' => 'Показатель треплинга', 'Trapped' => 'Треппинг', 'Type' => 'Тип', - 'UIC1Tag' => 'UIC - Тег 1', - 'UIC2Tag' => 'UIC - Тег 2', - 'UIC3Tag' => 'UIC - Тег 3', - 'UIC4Tag' => 'UIC - Тег 4', + 'UIC1Tag' => 'UIC — Тег 1', + 'UIC2Tag' => 'UIC — Тег 2', + 'UIC3Tag' => 'UIC — Тег 3', + 'UIC4Tag' => 'UIC — Тег 4', + 'USPTOMiscellaneous' => 'USPTO — Разнообразный', 'USPTOOriginalContentType' => { - Description => 'USPTO - Исходный тип контента', + Description => 'USPTO — Исходный тип контента', PrintConv => { 'Color' => 'Цвет', 'Grayscale' => 'Оттенки серого', @@ -1853,13 +1866,13 @@ $VERSION = '1.05'; 'UniqueDocumentID' => 'Уникальный ID документа', 'UniqueObjectName' => 'Уникальное имя объекта', 'Urgency' => { - Description => 'Приоритет обработки', + Description => 'Срочность', PrintConv => { - '0 (reserved)' => '0 (Зарезервированно)', - '1 (most urgent)' => '1 (Срочно)', - '5 (normal urgency)' => '5 (Обычный)', - '8 (least urgent)' => '8 (Не срочно)', - '9 (user-defined priority)' => '9 (Пользовательский приоритет)', + '0 (reserved)' => '0 (зарезервировано)', + '1 (most urgent)' => '1 (срочно)', + '5 (normal urgency)' => '5 (обычная)', + '8 (least urgent)' => '8 (не срочно)', + '9 (user-defined priority)' => '9 (пользовательский приоритет)', }, }, 'UsageRightsMessage' => 'Сообщение о правах использования', @@ -1884,18 +1897,18 @@ $VERSION = '1.05'; PrintConv => { 'Auto' => 'Автоматическая', 'No correction params available' => 'Недоступна', - 'Off' => 'Не включена', + 'Off' => 'Отключена', }, }, 'Volume' => 'Том', - 'WBBlueLevel' => 'Баланс Белого - Уровень синего', - 'WBGreenLevel' => 'Баланс Белого - Уровень зелёного', - 'WBRedLevel' => 'Баланс Белого - Уровень красного', - 'WB_GRGBLevels' => 'Уровни WB GRGB', - 'WangAnnotation' => 'Wang Imaging - Аннотация', - 'WangTag1' => 'Wang Imaging - Тег 1', - 'WangTag3' => 'Wang Imaging - Тег 3', - 'WangTag4' => 'Wang Imaging - Тег 4', + 'WBBlueLevel' => 'Баланс Белого — Уровень синего', + 'WBGreenLevel' => 'Баланс Белого — Уровень зелёного', + 'WBRedLevel' => 'Баланс Белого — Уровень красного', + 'WB_GRGBLevels' => 'Уровни WB_GRGB', + 'WangAnnotation' => 'Wang Imaging — Аннотация', + 'WangTag1' => 'Wang Imaging — Тег 1', + 'WangTag3' => 'Wang Imaging — Тег 3', + 'WangTag4' => 'Wang Imaging — Тег 4', 'WarpQuadrilateral' => 'Деформация четвероугольника', 'WaterDepth' => 'Глубина воды', 'WhiteBalance' => { @@ -1904,37 +1917,37 @@ $VERSION = '1.05'; 'Auto' => 'Автоматический', 'Black & White' => 'Монохром', 'Cloudy' => 'Облачность', - 'Color Temperature/Color Filter' => 'Цветовая температура / Цветовой фильтр', + 'Color Temperature/Color Filter' => 'Цветовая температура/цветовой фильтр', 'Cool White Fluorescent' => 'Флуоресцентный белый холодный', - 'Custom' => 'Пользователь', - 'Custom 1' => 'ПЕРСОНАЛЬНЫЙ 1', - 'Custom 2' => 'ПЕРСОНАЛЬНЫЙ 2', - 'Custom 3' => 'ПЕРСОНАЛЬНЫЙ 3', - 'Custom 4' => 'ПЕРСОНАЛЬНЫЙ 4', + 'Custom' => 'Пользовательский', + 'Custom 1' => 'Пользовательский 1', + 'Custom 2' => 'Пользовательский 2', + 'Custom 3' => 'Пользовательский 3', + 'Custom 4' => 'Пользовательский 4', 'Day White Fluorescent' => 'Флуоресцентный белый дневной', - 'Daylight' => 'Дневной свет', + 'Daylight' => 'Дневной', 'Daylight Fluorescent' => 'Флуоресцентный дневной', 'Flash' => 'Вспышка', 'Fluorescent' => 'Флуоресцентный', 'Manual' => 'Ручной', 'Shade' => 'Тень', 'Tungsten' => 'Лампа накаливания', - 'Unknown' => 'неизвестно', + 'Unknown' => 'Неизвестно', 'Warm White Fluorescent' => 'Флуоресцентный теплый белый', 'White Fluorescent' => 'Флуоресцентный белый', }, }, 'WhiteLevel' => 'Уровень белого', - 'WhitePoint' => 'Цветность белой точки', - 'WidthResolution' => 'Разрешение по ширине (PPI)', + 'WhitePoint' => 'Точка белого', + 'WidthResolution' => 'Разрешение по ширине', 'WrapModes' => 'Режим обёртывания', - 'Writer-Editor' => 'Писатель/Редактор', + 'Writer-Editor' => 'Писатель/редактор', 'XClipPathUnits' => 'Единицы обтравочного контура (X)', - 'XPAuthor' => 'XP - Автор', - 'XPComment' => 'XP - Комментарии', - 'XPKeywords' => 'XP - Ключевые слова', - 'XPSubject' => 'XP - Тема', - 'XPTitle' => 'XP - Название', + 'XPAuthor' => 'XP — Автор', + 'XPComment' => 'XP — Комментарии', + 'XPKeywords' => 'XP — Ключевые слова', + 'XPSubject' => 'XP — Тема', + 'XPTitle' => 'XP — Название', 'XPosition' => 'Смещение изображения по X', 'XResolution' => 'Разрешение по X', 'YCbCrCoefficients' => 'Коэффициенты преобразования из RGB в Y Cb Cr', @@ -1947,22 +1960,21 @@ $VERSION = '1.05'; }, 'YCbCrSubSampling' => 'Коэффициент субдискретизации Y Cb Cr', 'YClipPathUnits' => 'Единицы обтравочного контура (Y)', - 'YPosition' => 'Смещение изображения по Y', + 'YPosition' => 'Позициия по Y', 'YResolution' => 'Разрешение по Y', 'Year' => 'Год', 'ZoneMatching' => { Description => 'Соответствие областей', PrintConv => { - 'High Key' => 'Hi', - 'ISO Setting Used' => 'Отключено', - 'Low Key' => 'Lo', + 'High Key' => 'Высокий ключ', + 'ISO Setting Used' => 'Используемые настройки ISO', + 'Low Key' => 'Низкий ключ', }, }, ); 1; # end - __END__ =head1 NAME diff --git a/lib/Image/ExifTool/Minolta.pm b/lib/Image/ExifTool/Minolta.pm index 7f40d7cc..a789d6a8 100644 --- a/lib/Image/ExifTool/Minolta.pm +++ b/lib/Image/ExifTool/Minolta.pm @@ -49,7 +49,7 @@ use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::Exif; -$VERSION = '2.78'; +$VERSION = '2.79'; # Full list of product codes for Sony-compatible Minolta lenses # (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570) @@ -363,7 +363,9 @@ $VERSION = '2.78'; 137 => 'Cosina 70-210mm F2.8-4 AF', #11 138 => 'Soligor 19-35mm F3.5-4.5', #11 139 => 'Tokina AF 28-300mm F4-6.3', #IB - 142 => 'Voigtlander 70-300mm F4.5-5.6', #JD + # (the following Cosina 70-300mm lens was also marketed as a Phoenix, Vivitar Series 1, and + # some sort of 3rd-party marketing as a Voightlander 70-300mm F4.5-5.6 SKOPAR AF, ref IB) + 142 => 'Cosina AF 70-300mm F4.5-5.6 MC', #IB (was 'Voigtlander 70-300mm F4.5-5.6', #JD) 146 => 'Voigtlander Macro APO-Lanthar 125mm F2.5 SL', #JD 194 => 'Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical [IF]', #23 (Model A16) 202 => 'Tamron SP AF 70-200mm F2.8 Di LD [IF] Macro', #JR (Model A001) (see also 255.7) diff --git a/lib/Image/ExifTool/Nikon.pm b/lib/Image/ExifTool/Nikon.pm index 768ce600..6deaa343 100644 --- a/lib/Image/ExifTool/Nikon.pm +++ b/lib/Image/ExifTool/Nikon.pm @@ -60,7 +60,7 @@ use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::Exif; use Image::ExifTool::GPS; -$VERSION = '3.67'; +$VERSION = '3.69'; sub LensIDConv($$$); sub ProcessNikonAVI($$$); @@ -333,6 +333,7 @@ sub GetAFPointGrid($$;$); 'AA 48 88 A4 3C 3C D5 0E' => 'AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR + 1.4x TC', 'AB 44 5C 8E 34 3C D6 CE' => 'AF-P Nikkor 70-300mm f/4.5-5.6E ED VR', 'AB 44 5C 8E 34 3C D6 0E' => 'AF-P Nikkor 70-300mm f/4.5-5.6E ED VR', + 'AB 44 5C 8E 34 3C D6 4E' => 'AF-P Nikkor 70-300mm f/4.5-5.6E ED VR', #IB 'AC 54 3C 3C 0C 0C D7 46' => 'AF-S Nikkor 28mm f/1.4E ED', 'AC 54 3C 3C 0C 0C D7 06' => 'AF-S Nikkor 28mm f/1.4E ED', 'AD 3C A0 A0 3C 3C D8 0E' => 'AF-S Nikkor 500mm f/5.6E PF ED VR', @@ -1719,7 +1720,7 @@ my %binaryDataAttrs = ( TagTable => 'Image::ExifTool::Nikon::ShotInfoD500', DecryptStart => 4, DecryptLen => 0x2c24 + 12, - DecryptMore => 'Get32u(\$data, 0xa0) + 12', + DecryptMore => 'Get32u(\$data, 0xa8) + 0x2ea5 - 0x2c90', ByteOrder => 'LittleEndian', }, }, @@ -1730,7 +1731,7 @@ my %binaryDataAttrs = ( TagTable => 'Image::ExifTool::Nikon::ShotInfoD500', DecryptStart => 4, DecryptLen => 0x2cb2 + 4, - DecryptMore => 'Get32u(\$data, 0xa0) + 12', + DecryptMore => 'Get32u(\$data, 0xa8) + 0x2ea5 - 0x2c90', ByteOrder => 'LittleEndian', }, }, @@ -4466,16 +4467,18 @@ my %nikonFocalConversions = ( RawConv => '$$self{NewLensData} = 1 unless $val =~ /^.\0+$/s; undef', Hidden => 1, }, - #0x30 => { - # Name => 'LensID', ? (NC) - # Condition => '$$self{NewLensData}', - # Format => 'int16u', - # PrintConv => { - # 1 => 'Nikkor Z 24-70mm f/4 S', - # 4 => 'Nikkor Z 35mm f/1.8 S', - # 9 => 'Nikkor Z 50mm f/1.8 S', - # }, - #}, + 0x30 => { + Name => 'LensID', + Condition => '$$self{NewLensData}', + Format => 'int16u', + PrintConv => { + 1 => 'Nikkor Z 24-70mm f/4 S', + 2 => 'Nikkor Z 14-30mm f/4 S', + 4 => 'Nikkor Z 35mm f/1.8 S', + 9 => 'Nikkor Z 50mm f/1.8 S', + 13 => 'Nikkor Z 24-70mm f/2.8 S', + }, + }, 0x36 => { Name => 'MaxAperture', Condition => '$$self{NewLensData}', @@ -5685,8 +5688,8 @@ my %nikonFocalConversions = ( WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted, CHECK_PROC => \&Image::ExifTool::CheckBinaryData, VARS => { ID_LABEL => 'Index' }, - DATAMEMBER => [ 0x04, 0x10, 0x14, 0x2c, 0x50, 0x58, 0xa0, 0xb0, - 0x07b0, 0x086c, 0x0e7c, 0x0eea, 0x2c23 ], + DATAMEMBER => [ 0x04, 0x10, 0x14, 0x2c, 0x50, 0x58, 0xa0, 0xa8, 0xb0, + 0x07b0, 0x086c, 0x0e7c, 0x0eea, 0x2c23, 0x2c8f ], IS_SUBDIR => [ 0x0eeb ], WRITABLE => 1, FIRST_ENTRY => 0, @@ -5752,6 +5755,14 @@ my %nikonFocalConversions = ( Hidden => 1, RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef', # (ignore if 0) }, + 0xa8 => { + Name => 'OtherOffset', + DataMember => 'OtherOffset', + Format => 'int32u', + Writable => 0, + Hidden => 1, + RawConv => '$$self{OtherOffset} = $val || 0x10000000; undef', # (ignore if 0) + }, # # Tag ID's below are the offsets for a D500 JPEG image, but these offsets change # for various image types according to the offset table above @@ -6141,9 +6152,15 @@ my %nikonFocalConversions = ( PrintConv => 'sprintf("%.1f", $val)', PrintConvInv => '$val', }, - # note: DecryptLen currently set to OrientationOffset + 12 - - # (not sure about how this moves around) +### 0x2c90 - OtherInfo start (D500 firmware 1.20d) + 0x2c8f => { + Name => 'Hook7', + Hidden => 1, + RawConv => 'undef', + # account for variable location of OtherInfo data + Hook => '$varSize = $$self{OtherOffset} - 0x2c90', + }, + # (needs testing) #0x2cb2 => { # Name => 'ExtendedPhotoShootingBanks', # Mask => 0x01, @@ -6152,10 +6169,10 @@ my %nikonFocalConversions = ( # 1 => 'Off', # }, #}, - # don't decode this because it is duplicate information and moves around with firmware versions + # (may not be reliable and is found elsewhere) #0x2ea2 => { # Name => 'Rotation', - # Condition => '$$self{Model} =~ /\bD500\b/ and $$self{FirmwareVersion} =~ /^1.1/', + # Condition => '$$self{Model} =~ /\bD500\b/', # Notes => 'D500 firmware 1.1x', # Mask => 0x30, # PrintConv => { @@ -6165,6 +6182,19 @@ my %nikonFocalConversions = ( # 3 => 'Rotate 180', # }, #}, + 0x2ea4 => { + Name => 'NikonMeteringMode', + Condition => '$$self{Model} =~ /\bD500\b/', # (didn't seem to work for D5, but I need more samples) + Notes => 'D500 only', + Mask => 0x03, + PrintConv => { + 0 => 'Matrix', + 1 => 'Center', + 2 => 'Spot', + 3 => 'Highlight' + }, + }, + # note: DecryptLen currently set to OtherOffset + 0x2ea5 - 0x2c90 ); # shot information for the D610 firmware 1.00 (encrypted) - ref PH %Image::ExifTool::Nikon::ShotInfoD610 = ( @@ -6370,7 +6400,7 @@ my %nikonFocalConversions = ( }, }, 0x175e => { - Name => 'D810MeteringMode', + Name => 'NikonMeteringMode', Mask => 0x03, PrintConv => { 0 => 'Matrix', diff --git a/lib/Image/ExifTool/PNG.pm b/lib/Image/ExifTool/PNG.pm index a0354323..9213963f 100644 --- a/lib/Image/ExifTool/PNG.pm +++ b/lib/Image/ExifTool/PNG.pm @@ -19,6 +19,14 @@ # decompress then decode the ASCII/hex profile information before # you can edit it, then you have to ASCII/hex-encode, recompress # and calculate a CRC before you can write it out again. gaaaak. +# +# Although XMP is allowed after the IDAT chunk according to the +# PNG specifiction, some apps (Apple Spotlight and Preview for +# OS X 10.8.5 and Adobe Photoshop CC 14.0) ignore it unless it +# comes before IDAT. As of version 11.58, ExifTool uses a 2-pass +# writing algorithm to allow it to be compatible with XMP after +# IDAT while writing it before IDAT. (PNG and EXIF are still +# written after IDAT.) #------------------------------------------------------------------------------ package Image::ExifTool::PNG; @@ -27,7 +35,7 @@ use strict; use vars qw($VERSION $AUTOLOAD %stdCase); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.47'; +$VERSION = '1.51'; sub ProcessPNG_tEXt($$$); sub ProcessPNG_iTXt($$$); @@ -502,9 +510,7 @@ my %unreg = ( Notes => 'unregistered' ); XMP specification, and is where ExifTool will add a new XMP chunk if the image didn't already contain XMP }, - SubDirectory => { - TagTable => 'Image::ExifTool::XMP::Main', - }, + SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' }, }, 'Raw profile type APP1' => [ { @@ -792,7 +798,7 @@ sub FoundPNG($$$$;$$$$) my $processed; if ($$tagInfo{SubDirectory}) { if ($$et{OPTIONS}{Validate} and $$tagInfo{NonStandard}) { - $et->Warn("Non-standard $$tagInfo{NonStandard} in PNG $tag chunk", 1); + $et->WarnOnce("Non-standard $$tagInfo{NonStandard} in PNG $tag chunk", 1); } my $subdir = $$tagInfo{SubDirectory}; my $dirName = $$subdir{DirName} || $tagName; @@ -830,23 +836,11 @@ sub FoundPNG($$$$;$$$$) return 1 unless $$et{EDIT_DIRS}{$dirName}; $$outBuff = $et->WriteDirectory(\%subdirInfo, $subTable); if ($tagName eq 'XMP' and $$outBuff) { - if ($$et{FoundIDAT} and $$et{DEL_GROUP}{XMP}) { - $et->VPrint(0,' Deleting XMP'); - $$outBuff = ''; - } else { - # make sure the XMP is marked as read-only - Image::ExifTool::XMP::ValidateXMP($outBuff,'r'); - } + # make sure the XMP is marked as read-only + Image::ExifTool::XMP::ValidateXMP($outBuff,'r'); } DoneDir($et, $dirName, $outBuff, $$tagInfo{NonStandard}); } else { - # issue warning for standard XMP after IDAT (PNGEarlyXMP option) - if ($tagName eq 'XMP' and not $$tagInfo{NonStandard} and - $$et{FoundIDAT} and $$et{FoundIDAT} == 2) - { - $et->Warn('XMP found after PNG IDAT'); - $$et{FoundIDAT} = 1; - } $processed = $et->ProcessDirectory(\%subdirInfo, $subTable, $processProc); } $compressed = 1; # pretend this is compressed since it is binary data @@ -1055,7 +1049,7 @@ sub ProcessProfile($$$) $$outBuff = $et->WriteDirectory(\%dirInfo, $tagTablePtr, \&Image::ExifTool::WriteTIFF); $$outBuff = $Image::ExifTool::exifAPP1hdr . $$outBuff if $$outBuff; - DoneDir($et, 'IFD0', $outBuff); + DoneDir($et, 'IFD0', $outBuff, $$tagInfo{NonStandard}); } else { $processed = $et->ProcessTIFF(\%dirInfo); } @@ -1069,7 +1063,7 @@ sub ProcessProfile($$$) return 1 unless $$editDirs{XMP}; $$outBuff = $et->WriteDirectory(\%dirInfo, $tagTablePtr); $$outBuff and $$outBuff = $Image::ExifTool::xmpAPP1hdr . $$outBuff; - DoneDir($et, 'XMP', $outBuff, 1); + DoneDir($et, 'XMP', $outBuff, $$tagInfo{NonStandard}); } else { $processed = $et->ProcessDirectory(\%dirInfo, $tagTablePtr); } @@ -1085,7 +1079,7 @@ sub ProcessProfile($$$) } $$outBuff = $et->WriteDirectory(\%dirInfo, $tagTablePtr, \&Image::ExifTool::WriteTIFF); - DoneDir($et, 'IFD0', $outBuff); + DoneDir($et, 'IFD0', $outBuff, $$tagInfo{NonStandard}); } else { $processed = $et->ProcessTIFF(\%dirInfo); } @@ -1148,6 +1142,7 @@ sub ProcessPNG_tEXt($$$) my ($et, $dirInfo, $tagTablePtr) = @_; my ($tag, $val) = split /\0/, ${$$dirInfo{DataPt}}, 2; my $outBuff = $$dirInfo{OutBuff}; + $$et{INDENT} = substr($$et{INDENT}, 0, -2) if $$et{OPTIONS}{Verbose}; return FoundPNG($et, $tagTablePtr, $tag, $val, undef, $outBuff, 'Latin'); } @@ -1166,6 +1161,7 @@ sub ProcessPNG_iTXt($$$) # set compressed flag so we will decompress it in FoundPNG() $compressed and $compressed = 2 + $meth; my $outBuff = $$dirInfo{OutBuff}; + $$et{INDENT} = substr($$et{INDENT}, 0, -2) if $$et{OPTIONS}{Verbose}; return FoundPNG($et, $tagTablePtr, $tag, $val, $compressed, $outBuff, 'UTF8', $lang); } @@ -1234,14 +1230,14 @@ sub ProcessPNG($$) my $datChunk = ''; my $datCount = 0; my $datBytes = 0; - my ($sig, $err); + my ($sig, $err, $xmp, $foundXMP, $foundIDAT, $editingXMP, $deletingXMP); # check to be sure this is a valid PNG/MNG/JNG image return 0 unless $raf->Read($sig,8) == 8 and $pngLookup{$sig}; - $$raf{NoBuffer} = 1 if $et->Options('FastScan'); # disable buffering in FastScan mode + # disable buffering in FastScan mode + $$raf{NoBuffer} = 1 if $et->Options('FastScan') and not $outfile; - my $earlyXMP = $et->Options('PNGEarlyXMP'); if ($outfile) { delete $$et{TextChunkType}; Write($outfile, $sig) or $err = 1 if $outfile; @@ -1249,18 +1245,14 @@ sub ProcessPNG($$) $$et{ADD_PNG} = $et->GetNewTagInfoHash( \%Image::ExifTool::PNG::Main, \%Image::ExifTool::PNG::TextualData); - # NOTE: PNGDoneTag and PNGDoneDir are used to keep track of metadata added - # before the PNG IEND chunk is encountered. Currently this is implemented - # only for XMP (written before IDAT with the PNGEarlyXMP option), but - # may be implemented in the future for other types - PH + # NOTE: PNGDoneTag is used to keep track of metadata added before the + # PNG IEND chunk is encountered. Currently this is implemented only + # for XMP, but may be implemented in the future for other types - PH $$et{PNGDoneTag} = { }; - $$et{PNGDoneDir} = { }; # initialize with same directories, with PNG tags taking priority $et->InitWriteDirs(\%pngMap,'PNG'); - # write XMP before IDAT if we would delete it later anyway - $earlyXMP = 1 if $$et{DEL_GROUP}{XMP}; - } elsif ($$et{OPTIONS}{Validate}) { - $earlyXMP = 1; # warn about XMP after IDAT when validating + $editingXMP = $$et{EDIT_DIRS}{XMP}; + $deletingXMP = $$et{DEL_GROUP}{XMP}; } my ($fileType, $hdrChunk, $endChunk) = @{$pngLookup{$sig}}; $et->SetFileType($fileType); # set the FileType tag @@ -1271,9 +1263,34 @@ sub ProcessPNG($$) $mngTablePtr = GetTagTable('Image::ExifTool::MNG::Main'); } my $verbose = $et->Options('Verbose'); + my $validate = $et->Options('Validate'); my $out = $et->Options('TextOut'); my ($hbuf, $dbuf, $cbuf, $wasHdr, $wasEnd); + # scan ahead for XMP if we are editing it + if ($outfile and $editingXMP and not $deletingXMP) { + while ($raf->Read($hbuf,8) == 8) { + my ($len, $chunk) = unpack('Na4',$hbuf); + last if $len > 0x7fffffff; + if ($chunk ne 'iTXt' or $len < 22) { + $raf->Seek($len + 4, 1) or last; + next; + } + $raf->Read($dbuf, 18) == 18 or last; + unless ($dbuf eq "XML:com.adobe.xmp\0") { # is this XMP? + $raf->Seek($len - 18 + 4, 1) or last; + next; + }; + $raf->Read($dbuf, $len - 18) == $len - 18 or last; + my ($compressed, $meth) = unpack('CC', $dbuf); + $compressed and $et->Error('XMP is compressed'), last; + my ($lang, $trans); + ($lang, $trans, $xmp) = split /\0/, substr($dbuf, 2), 3; + last; + } + $raf->Seek(8,0) or $et->Error('Error seeking in file'), return -1; + } + # process the PNG/MNG/JNG chunks undef $noCompressLib; for (;;) { @@ -1298,25 +1315,52 @@ sub ProcessPNG($$) my $s = $datCount > 1 ? 's' : ''; print $out "$fileType $datChunk ($datCount chunk$s, total $datBytes bytes)\n"; $datCount = $datBytes = 0; - $datChunk = ''; } - if ($chunk =~ /^(IDAT|JDAT|JDAA)$/) { - $datChunk = $chunk; - $datCount++; - $datBytes += $len; + } + unless ($wasHdr) { + if ($chunk eq $hdrChunk) { + $wasHdr = 1; + } elsif ($hdrChunk eq 'IHDR' and $chunk eq 'CgBI') { + $et->Warn('Non-standard PNG image (Apple iPhone format)'); + } else { + $et->Warn("$fileType image did not start with $hdrChunk"); + last; } } + if ($chunk =~ /^(IDAT|JDAT|JDAA)$/) { + $datChunk = $chunk; + $datCount++; + $datBytes += $len; + } else { + $datChunk = ''; + } if ($outfile) { + # add XMP before any data chunk, or before IEND/MEND if no data + if ($datChunk or $chunk eq $endChunk) { + if ($xmp) { + # rewrite existing XMP + my $tbl = GetTagTable('Image::ExifTool::PNG::TextualData'); + my $buf; + FoundPNG($et, $tbl, 'XML:com.adobe.xmp', $xmp, 0, \$buf, 'UTF8', ''); + my $outBuff = defined $buf ? \$buf : \$xmp; + if (length $$outBuff) { + my $hdr = pack('Na4', length($$outBuff), 'iTXt'); + my $crc = CalculateCRC(\$hdr, undef, 4); + $crc = CalculateCRC($outBuff, $crc); + Write($outfile, $hdr, $$outBuff, pack('N',$crc)) or $err = 1; + } + undef $xmp; # done with this XMP + } elsif ($$et{ADD_DIRS}{XMP}) { + # add new XMP if necessary + AddChunks($et, $outfile, 'XMP') or $err = 1; + } + } if ($chunk eq $endChunk) { - # add any new chunks immediately before the IEND/MEND chunk + # add other new chunks immediately before the IEND/MEND chunk AddChunks($et, $outfile) or $err = 1; } elsif ($chunk eq 'PLTE' or $chunk eq 'IDAT') { - if ($chunk eq 'IDAT') { - # add XMP before IDAT if specified - AddChunks($et, $outfile, 'XMP') or $err = 1 if $earlyXMP; - # pHYs comes before IDAT - AddChunks($et, $outfile, 'PNG-pHYs') or $err = 1; - } + # pHYs must come before IDAT + AddChunks($et, $outfile, 'PNG-pHYs') or $err = 1 if $chunk eq 'IDAT'; # iCCP chunk must come before PLTE and IDAT # (ignore errors -- will add later as text profile if this fails) Add_iCCP($et, $outfile); @@ -1352,34 +1396,61 @@ sub ProcessPNG($$) } next; } - # set FoundIDAT flag: 1=after IDAT, 2=after IDAT and warn about late XMP - $$et{FoundIDAT} = $earlyXMP ? 2 : 1 if $chunk eq 'IDAT'; + if ($datChunk) { + $foundIDAT = 1 if $chunk eq 'IDAT'; # set flag indicating IDAT was found + # skip over data chunks if possible + unless ($verbose or $validate or $outfile) { + $raf->Seek($len + 4, 1) or $et->Warn('Seek error'), last; + next; + } + } # read chunk data and CRC unless ($raf->Read($dbuf,$len)==$len and $raf->Read($cbuf, 4)==4) { $et->Warn("Corrupted $fileType image") unless $wasEnd; last; } - unless ($wasHdr) { - if ($chunk eq $hdrChunk) { - $wasHdr = 1; - } elsif ($hdrChunk eq 'IHDR' and $chunk eq 'CgBI') { - $et->Warn('Non-standard PNG image (Apple iPhone format)'); - } else { - $et->Warn("$fileType image did not start with $hdrChunk"); - last; - } - } - if ($verbose) { + if ($verbose or $validate or $outfile) { # check CRC when in verbose mode (since we don't care about speed) my $crc = CalculateCRC(\$hbuf, undef, 4); $crc = CalculateCRC(\$dbuf, $crc); - $crc == unpack('N',$cbuf) or $et->Warn("Bad CRC for $chunk chunk") unless $wasEnd; + unless ($crc == unpack('N',$cbuf)) { + my $msg = "Bad CRC for $chunk chunk"; + $outfile ? $et->Error($msg, 1) : $et->Warn($msg); + } if ($datChunk) { Write($outfile, $hbuf, $dbuf, $cbuf) or $err = 1 if $outfile; next; } - print $out "$fileType $chunk ($len bytes):\n"; - $et->VerboseDump(\$dbuf, Addr => $raf->Tell() - $len - 4) if $verbose > 2; + if ($verbose) { + print $out "$fileType $chunk ($len bytes):\n"; + $et->VerboseDump(\$dbuf, Addr => $raf->Tell() - $len - 4) if $verbose > 2; + } + } + if ($chunk eq 'iTXt' and $dbuf =~ /^XML:com.adobe.xmp\0/) { + $foundXMP = ($foundXMP || 0) + 1; + if ($outfile and $editingXMP) { + # handle this standard XMP iTXt chunk + my $editNow; + if ($deletingXMP) { + # just fall through + } elsif ($foundXMP > 1) { + $et->Error('Multiple XMP chunks', 1) if $foundXMP == 2; + } elsif ($foundIDAT) { + $et->WarnOnce('XMP found after PNG IDAT. Fixed.'); + } elsif ($xmp) { + # the XMP is already before IDAT, so edit it now + $editNow = 1; + undef $xmp; # (don't write again later) + } + unless ($editNow) { + ++$$et{CHANGED}; + print $out " Deleting XMP\n" if $verbose; + next; + } + } else { + $et->WarnOnce('XMP found after PNG IDAT') if $foundIDAT; + $et->Warn('Multiple XMP chunks') if $foundXMP == 2; + } } # translate case of chunk name if necessary if (not $$tagTablePtr{$chunk}) { diff --git a/lib/Image/ExifTool/QuickTime.pm b/lib/Image/ExifTool/QuickTime.pm index ebdfdd53..7d07f9a9 100644 --- a/lib/Image/ExifTool/QuickTime.pm +++ b/lib/Image/ExifTool/QuickTime.pm @@ -1337,8 +1337,8 @@ my %eeBox = ( L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> tags are preferred over these, so to create the tag when a same-named ItemList tag exists, either "UserData" must be specified (eg. C<-UserData:Artist=Monet> - on the command line), or the PREFERRED level must be changed via the config - file. + on the command line), or the PREFERRED level must be changed via + L<the config file|../config.html#PREF>. }, "\xa9cpy" => { Name => 'Copyright', Groups => { 2 => 'Author' } }, "\xa9day" => { @@ -5568,7 +5568,7 @@ my %eeBox = ( preferred when writing, so to create a tag when a same-named tag exists in either of these tables, either the "Keys" location must be specified (eg. C<-Keys:Author=Phil> on the command line), or the PREFERRED level must be - changed via the config file. + changed via L<the config file|../config.html#PREF>. }, version => 'Version', album => 'Album', diff --git a/lib/Image/ExifTool/README b/lib/Image/ExifTool/README index 1b00d66d..fadd7860 100644 --- a/lib/Image/ExifTool/README +++ b/lib/Image/ExifTool/README @@ -360,6 +360,9 @@ numerical, and generated automatically otherwise. 'DataTag' - associated tag name containing data for offset or byte count tags. + 'DelGroup' - set if deleting this tag is the same as deleting + the group of the same name. + 'Drop' - [IFD-format and PhaseOne makernote tags only] set to 1 for tags that should be excluded when rebuilding maker notes when copying all tags. Set to a number larger than 1 to drop diff --git a/lib/Image/ExifTool/RIFF.pm b/lib/Image/ExifTool/RIFF.pm index c77bb730..5321a6c6 100644 --- a/lib/Image/ExifTool/RIFF.pm +++ b/lib/Image/ExifTool/RIFF.pm @@ -29,7 +29,7 @@ use strict; use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.52'; +$VERSION = '1.53'; sub ConvertTimecode($); sub ProcessSGLT($$$); @@ -904,7 +904,7 @@ my %code2charset = ( # RIFF character set chunk %Image::ExifTool::RIFF::CSET = ( - PROCESS_PROC => \&Image::ExifTool::RIFF::ProcessBinaryData, + PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData, GROUPS => { 2 => 'Other' }, FORMAT => 'int16u', 0 => { diff --git a/lib/Image/ExifTool/Sigma.pm b/lib/Image/ExifTool/Sigma.pm index 8689ee81..6011ebdf 100644 --- a/lib/Image/ExifTool/Sigma.pm +++ b/lib/Image/ExifTool/Sigma.pm @@ -19,7 +19,7 @@ use strict; use vars qw($VERSION %sigmaLensTypes); use Image::ExifTool::Exif; -$VERSION = '1.25'; +$VERSION = '1.26'; # sigma LensType lookup (ref IB) %sigmaLensTypes = ( @@ -88,7 +88,9 @@ $VERSION = '1.25'; 0x256 => 'Sigma 105mm F2.8 EX Macro', 0x257 => 'Sigma 105mm F2.8 EX DG Macro', 0x258 => 'Sigma 105mm F2.8 EX DG OS HSM Macro', + 0x259 => 'Sigma 105mm F1.4 DG HSM | A', #IB (A018) 0x270 => 'Sigma 70mm F2.8 EX DG Macro', #NJ (SD1) + 0x271 => 'Sigma 70mm F2.8 DG Macro | A', #IB (A018) 0x300 => 'Sigma 30mm F1.4 EX DC HSM', 0x301 => 'Sigma 30mm F1.4 DC HSM | A', 0x302 => 'Sigma 30mm F1.4 DC DN | C', #JR (DN lenses are only for Sony E or MFT mount) @@ -175,6 +177,7 @@ $VERSION = '1.25'; 0x727 => 'Sigma 135-400mm F4.5-5.6 DG ASP APO', 0x728 => 'Sigma 120-400mm F4.5-5.6 DG APO OS HSM', 0x729 => 'Sigma 100-400mm F5-6.3 DG OS HSM | C', #JR (017) + 0x730 => 'Sigma 60-600mm F4.5-6.3 DG OS HSM | S', #IB (S018) 0x733 => 'Sigma 170-500mm F5-6.3 ASP APO', 0x734 => 'Sigma 170-500mm F5-6.3 DG ASP APO', 0x735 => 'Sigma 50-500mm F4-6.3 EX RF HSM APO', diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm index a8398f05..7d75f268 100644 --- a/lib/Image/ExifTool/Sony.pm +++ b/lib/Image/ExifTool/Sony.pm @@ -22,6 +22,8 @@ # IB) Iliah Borg private communication (LibRaw) # JD) Jens Duttke private communication # JR) Jos Roost private communication +# +# NC = Not Confirmed #------------------------------------------------------------------------------ package Image::ExifTool::Sony; @@ -32,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::Exif; use Image::ExifTool::Minolta; -$VERSION = '3.11'; +$VERSION = '3.15'; sub ProcessSRF($$$); sub ProcessSR2($$$); @@ -90,8 +92,9 @@ sub PrintInvLensSpec($;$$); 32791 => 'Sony E 16-70mm F4 ZA OSS', # VX9107 32792 => 'Sony E 10-18mm F4 OSS', # VX9108 32793 => 'Sony E PZ 16-50mm F3.5-5.6 OSS', # VX9109 - 32794 => 'Sony FE 35mm F2.8 ZA or Samyang AF 24mm F2.8', # VX9110 + 32794 => 'Sony FE 35mm F2.8 ZA or Samyang Lens', # VX9110 32794.1 => 'Samyang AF 24mm F2.8', #JR + 32794.2 => 'Samyang AF 35mm F2.8', #IB (also 51505) 32795 => 'Sony FE 24-70mm F4 ZA OSS', # VX9111 32796 => 'Sony FE 85mm F1.8 or Viltrox PFU RBMH 85mm F1.8', #JR 32796.1 => 'Viltrox PFU RBMH 85mm F1.8', #JR (MF) @@ -149,7 +152,7 @@ sub PrintInvLensSpec($;$$); 33078 => 'Sony FE 100-400mm F4.5-5.6 GM OSS + 2X Teleconverter', #JR 33079 => 'Sony FE 400mm F2.8 GM OSS + 1.4X Teleconverter', #IB 33080 => 'Sony FE 400mm F2.8 GM OSS + 2X Teleconverter', #JR - 33081 => 'Sony FE 200-600mm F5.6-6.3 G OSS + 1.4X Teleconverter', #JR (NC) + 33081 => 'Sony FE 200-600mm F5.6-6.3 G OSS + 1.4X Teleconverter', #JR 33082 => 'Sony FE 200-600mm F5.6-6.3 G OSS + 2X Teleconverter', #JR 33083 => 'Sony FE 600mm F4 GM OSS + 1.4X Teleconverter', #JR (NC) 33084 => 'Sony FE 600mm F4 GM OSS + 2X Teleconverter', #JR @@ -214,8 +217,9 @@ sub PrintInvLensSpec($;$$); # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014) # 504xx => 'Sigma 30mm F1.4 DC HSM | A + MC-11', # (013) + 51504 => 'Samyang AF 50mm F1.4', #IB 51505 => 'Samyang AF 14mm F2.8 or Samyang AF 35mm F2.8', #forum3833 - 51505.1 => 'Samyang AF 35mm F2.8', #PH + 51505.1 => 'Samyang AF 35mm F2.8', #PH (also 32794) 51507 => 'Samyang AF 35mm F1.4', #IB ); @@ -977,7 +981,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' }, },{ Name => 'Tag2010i', # ? - Condition => '$$self{Model} =~ /^(ILCE-(6400|7M3|7RM3|7RM4|9)|DSC-(RX10M4|RX100M6|RX100M5A|HX99|RX0M2))\b/', + Condition => '$$self{Model} =~ /^(ILCE-(6400|7M3|7RM3|7RM4|9)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2))\b/', SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' }, },{ Name => 'Tag_0x2010', @@ -1053,7 +1057,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); # FocusMode for SLT/HV/ILCA and NEX/ILCE; doesn't seem to apply to DSC models (always 0) # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag Name => 'FocusMode', - Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M5A|HX99|RX0M2)/)', + Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2)/)', Writable => 'int8u', Priority => 0, PrintConv => { @@ -1085,7 +1089,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); }, },{ Name => 'AFAreaModeSetting', - Condition => '$$self{Model} =~ /^(NEX-|ILCE-|DSC-(RX10M4|RX100M6|RX100M5A|HX99|RX0M2))/', + Condition => '$$self{Model} =~ /^(NEX-|ILCE-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/', Notes => 'NEX, ILCE and some DSC models', RawConv => '$$self{AFAreaILCE} = $val', DataMember => 'AFAreaILCE', @@ -1121,7 +1125,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); # observed values in range (0 0) to (640 480), with center (320 240) often seen # for NEX-5R/6, positions appear to be in an 11x9 grid Name => 'FlexibleSpotPosition', - Condition => '$$self{Model} =~ /^(NEX-|ILCE-|DSC-(RX10M4|RX100M6|RX100M5A|HX99|RX0M2))/', + Condition => '$$self{Model} =~ /^(NEX-|ILCE-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/', Writable => 'int16u', Count => 2, Notes => q{ @@ -1281,7 +1285,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag 0x2021 => { #JR Name => 'AFTracking', - Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M5A|HX99|RX0M2)/)', + Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2)/)', Writable => 'int8u', PrintConv => { 0 => 'Off', @@ -1890,6 +1894,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 ); 369 => 'DSC-RX100M5A', #JR 371 => 'ILCE-6400', #IB 372 => 'DSC-RX0M2', #JR + 374 => 'DSC-RX100M7', #IB 375 => 'ILCE-7RM4', #IB }, }, @@ -5840,6 +5845,7 @@ my %releaseMode2010 = ( 4 => 'Continuous - Burst', # seen for DSC-WX500 with burst of 10 shots 5 => 'Continuous - Speed/Advance Priority', 6 => 'Normal - Self-timer', # seen for ILCE-6300/6500/9, ILCA-99M2 + 9 => 'Single Burst Shooting', # first seen for DSC-RX100M7 }, ); my %selfTimer2010 = ( @@ -7829,7 +7835,7 @@ my %isoSetting2010 = ( GROUPS => { 0 => 'MakerNotes', 2 => 'Image' }, 0x0009 => { %releaseMode2 }, 0x000a => [{ - Condition => '$$self{Model} =~ /^(ILCE-(6400|7M3|7RM3|7RM4|9)|DSC-(RX10M4|RX100M6|RX100M5A|HX99|RX0M2))\b/', + Condition => '$$self{Model} =~ /^(ILCE-(6400|7M3|7RM3|7RM4|9)|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))\b/', Name => 'ShotNumberSincePowerUp', Format => 'int8u', },{ @@ -7847,6 +7853,7 @@ my %isoSetting2010 = ( 4 => '4 shots', 5 => '5 shots', 6 => '6 shots', + 7 => '7 shots', # DSC-RX100M7 Single Burst Shooting 9 => '9 shots', # ILCE-7RM2 9-shot bracketing 10 => '10 shots', 12 => '12 shots', # ILCA-77M2 12-shot MFNR-mode @@ -7863,6 +7870,7 @@ my %isoSetting2010 = ( 2 => '2 files', 3 => '3 files', 5 => '5 files', + 7 => '7 files', # DSC-RX100M7 Single Burst Shooting 9 => '9 files', # ILCE-7RM2 9-shot bracketing 10 => '10 files', # seen for DSC-WX500 with burst of 10 shots }, @@ -7910,7 +7918,7 @@ my %isoSetting2010 = ( 0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' }, 0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, - 0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 152', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, + 0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, 0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, 0x0634 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 68', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, 0x0636 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(73|74)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } }, @@ -8368,7 +8376,7 @@ my %isoSetting2010 = ( }, 0x0342 => { Name => 'LensZoomPosition', - Condition => '$$self{Model} !~ /^(ILCA-|ILCE-(7RM2|7M3|7RM3|7RM4|7SM2|6300|6400|6500|9)|DSC-(HX80|HX90V|HX99|RX0|RX10M2|RX10M3|RX10M4|RX100M4|RX100M5|RX100M5A|RX100M6|WX500))/', + Condition => '$$self{Model} !~ /^(ILCA-|ILCE-(7RM2|7M3|7RM3|7RM4|7SM2|6300|6400|6500|9)|DSC-(HX80|HX90V|HX99|RX0|RX10M2|RX10M3|RX10M4|RX100M4|RX100M5|RX100M5A|RX100M6|RX100M7|WX500))/', Format => 'int16u', PrintConv => 'sprintf("%.0f%%",$val/10.24)', PrintConvInv => '$val=~s/ ?%$//; $val * 10.24', @@ -8378,6 +8386,13 @@ my %isoSetting2010 = ( Condition => '$$self{Model} =~ /^(ILCA-(68|77M2)|ILCE-(5000|5100|6000|7|7R|7S|QX1)|Lusso)\b/', Format => 'int16s[16]', }, + 0x034e => { + Name => 'LensZoomPosition', + Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6400|7M3|7RM3|7RM4))/', + Format => 'int16u', + PrintConv => 'sprintf("%.0f%%",$val/10.24)', + PrintConvInv => '$val=~s/ ?%$//; $val * 10.24', + }, 0x0350 => { Name => 'VignettingCorrParams', Condition => '$$self{Model} =~ /^(ILCE-7M2)/', diff --git a/lib/Image/ExifTool/TagLookup.pm b/lib/Image/ExifTool/TagLookup.pm index f0d28e86..f7824e7e 100644 --- a/lib/Image/ExifTool/TagLookup.pm +++ b/lib/Image/ExifTool/TagLookup.pm @@ -1819,7 +1819,6 @@ my %tagLookup = ( 'd-rangeoptimizermode' => { 433 => 0x8022 }, 'd-rangeoptimizershadow' => { 433 => 0x802d }, 'd-rangeoptimizervalue' => { 433 => 0x8023 }, - 'd810meteringmode' => { 242 => 0x175e }, 'darkblacksegrows' => { 132 => 0x18d8 }, 'darkfocusenvironment' => { 302 => 0x8003 }, 'darkframecountfactor' => { 132 => 0xc85 }, @@ -3305,7 +3304,7 @@ my %tagLookup = ( 'lensfocusfunctionbuttons' => { 263 => '55.1', 265 => '52.1', 266 => '52.1', 275 => '52.1', 276 => '52.1' }, 'lensformat' => { 412 => 0x1891, 414 => 0x18bd, 415 => 0x18ed, 416 => 0x17f1, 418 => 0x106, 419 => 0x106, 428 => 0x603, 429 => 0x5d }, 'lensfstops' => { 207 => 0x7, 208 => 0xc, 209 => 0xd, 213 => 0xe, 215 => 0x8b, 328 => '0.3' }, - 'lensid' => { 452 => 'LensID' }, + 'lensid' => { 213 => 0x30, 452 => 'LensID' }, 'lensidnumber' => { 207 => 0x6, 208 => 0xb, 209 => 0xc, 213 => 0xd }, 'lensinfo' => { 114 => 0xa432, 334 => 0x2a, 452 => 'LensInfo', 462 => 'LensSpecification' }, 'lenskind' => { 328 => 0x1 }, @@ -3342,7 +3341,7 @@ my %tagLookup = ( 'lenstype' => { 7 => 0xe2, 8 => 0xd, 9 => 0x1a7, 10 => 0xc, 11 => 0x111, 12 => 0xc, 13 => 0x14f, 14 => 0xd6, 15 => 0xde, 16 => 0xf6, 17 => 0xea, 18 => 0xff, 19 => [0xc,0x97], 20 => 0xe6, 21 => 0x153, 22 => 0xea, 23 => 0xe8, 24 => 0x127, 25 => 0x161, 26 => 0x166, 27 => 0x184, 28 => 0x112, 29 => 0x189, 34 => 0x16, 177 => 0x10c, 178 => 0x49bd, 215 => 0x83, 280 => 0x201, 293 => 0x16, 297 => 0x310, 299 => 0x303, 300 => 0x303, 302 => 0x51, 304 => 0x3405, 329 => 0x0, 330 => 0x0, 331 => 0x1, 332 => 0x1, 333 => 0x1, 335 => 0x0, 376 => 0xa003, 379 => 0x27, 400 => 0xb027, 412 => 0x1896, 414 => 0x18c2, 415 => 0x18f2, 416 => 0x17f6, 418 => 0x109, 419 => 0x109, 428 => 0x608, 429 => 0x62 }, 'lenstype2' => { 389 => 0x3f7, 412 => 0x1893, 414 => 0x18bf, 415 => 0x18ef, 416 => 0x17f3, 418 => 0x107, 419 => 0x107, 428 => 0x605, 429 => 0x60 }, 'lenstype3' => { 432 => 0x9 }, - 'lenszoomposition' => { 425 => 0x19, 426 => 0x1e, 429 => [0x342,0x35a] }, + 'lenszoomposition' => { 425 => 0x19, 426 => 0x1e, 429 => [0x342,0x34e,0x35a] }, 'levelindicator' => { 310 => 0x15 }, 'levelmeter' => { 362 => ['Lvlm','lvlm'] }, 'levelorientation' => { 336 => 0x0 }, @@ -3941,6 +3940,7 @@ my %tagLookup = ( 'nikoncaptureversion' => { 215 => 0xe09 }, 'nikoniccprofile' => { 215 => 0xe1d }, 'nikonimagesize' => { 230 => '723.1', 231 => '732.1', 240 => 0x2c4 }, + 'nikonmeteringmode' => { 234 => 0x2ea4, 242 => 0x175e }, 'noisefilter' => { 279 => 0x527 }, 'noiseprofile' => { 114 => 0xc761 }, 'noisereduction' => { 122 => [0x100b,0x100e], 173 => 0xb0, 174 => 0x60, 175 => 0x3f, 215 => 0x95, 255 => 0x753dcbc0, 256 => 0x17, 279 => 0x50a, 284 => 0x103a, 302 => 0x2d, 337 => 0x49, 369 => 0x100f, 371 => 0x2a }, diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod index a721e62a..4bf3e5ae 100644 --- a/lib/Image/ExifTool/TagNames.pod +++ b/lib/Image/ExifTool/TagNames.pod @@ -12,7 +12,7 @@ meta information extracted from or written to a file. =head1 TAG TABLES The tables listed below give the names of all tags recognized by ExifTool. -They contain a total of 22992 tags, with 15044 unique tag names. +They contain a total of 22996 tags, with 15044 unique tag names. B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each table. A B<Tag ID> is the computer-readable equivalent of a tag name, and @@ -105,6 +105,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification. XMP XMP QVCI Casio QVCI FLIR FLIR FFF + RawThermalImage no 'APP2' ICC_Profile ICC_Profile FPXR FlashPix MPF MPF @@ -11772,7 +11773,7 @@ different for other firmware versions. 464 SecondarySlotFunction int8u & 0x03 5974 AEBracketingSteps int8u & 0xff 5975 WBBracketingSteps int8u & 0xff - 5982 D810MeteringMode int8u & 0x03 + 5982 NikonMeteringMode int8u & 0x03 6236 ISOAutoShutterTime int8u & 0x3f 6237 ISOAutoHiLimit int8u & 0xff 6315 CustomSettingsD810 NikonCustom SettingsD810 @@ -11894,6 +11895,7 @@ These tags are extracted from encrypted data in images from the D5 and D500. 11300 RollAngle fixed32u 11304 PitchAngle fixed32u 11308 YawAngle fixed32u + 11940 NikonMeteringMode int8u & 0x03 =head3 Nikon ShotInfoD610 Tags @@ -12064,6 +12066,7 @@ Tags found in the encrypted LensData from cameras such as the Z6 and Z7. 18 MaxApertureAtMaxFocal int8u 19 MCUVersion int8u 20 EffectiveMaxAperture int8u + 48 LensID int16u 54 MaxAperture int16u 56 FNumber int16u 60 FocalLength int16u @@ -17626,6 +17629,7 @@ RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/WX220/WX350, ILCE-7/ 100 DistortionCorrParams int16s[16] 834 LensZoomPosition int16u 842 VignettingCorrParams int16s[16] + 846 LensZoomPosition int16u 848 VignettingCorrParams int16s[16] 858 LensZoomPosition int16u 860 VignettingCorrParams int16s[16] @@ -25497,8 +25501,8 @@ Note when creating new tags, L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> tags are preferred over these, so to create the tag when a same-named ItemList tag exists, either "UserData" must be specified (eg. C<-UserData:Artist=Monet> -on the command line), or the PREFERRED level must be changed via the config -file. +on the command line), or the PREFERRED level must be changed via +the config file. Tag ID Tag Name Writable ------ -------- -------- @@ -28291,12 +28295,12 @@ WebP animation frame chunk. =head3 RIFF CSET Tags - Tag ID Tag Name Writable + Index2 Tag Name Writable ------ -------- -------- - 0x0000 CodePage no - 0x0001 CountryCode no - 0x0002 LanguageCode no - 0x0003 Dialect no + 0 CodePage no + 1 CountryCode no + 2 LanguageCode no + 3 Dialect no =head3 RIFF Info Tags @@ -33586,20 +33590,20 @@ values, may created via the ExifTool configuration file. GPS:GPSTimeStamp GPSDestLatitude GPS:GPSDestLatitude no GPS:GPSDestLatitudeRef - GPSDestLatitudeRef XMP:GPSDestLatitude no + GPSDestLatitudeRef XMP-exif:GPSDestLatitude no GPSDestLongitude GPS:GPSDestLongitude no GPS:GPSDestLongitudeRef - GPSDestLongitudeRef XMP:GPSDestLongitude no + GPSDestLongitudeRef XMP-exif:GPSDestLongitude no GPSLatitude GPS:GPSLatitude no GPS:GPSLatitudeRef GPSLatitude QuickTime:GPSCoordinates no GPSLatitude QuickTime:LocationInformation no - GPSLatitudeRef XMP:GPSLatitude no + GPSLatitudeRef XMP-exif:GPSLatitude no GPSLongitude GPS:GPSLongitude no GPS:GPSLongitudeRef GPSLongitude QuickTime:GPSCoordinates no GPSLongitude QuickTime:LocationInformation no - GPSLongitudeRef XMP:GPSLongitude no + GPSLongitudeRef XMP-exif:GPSLongitude no GPSPosition GPSLatitude no GPSLongitude HyperfocalDistance FocalLength no diff --git a/lib/Image/ExifTool/WritePNG.pl b/lib/Image/ExifTool/WritePNG.pl index a6930218..9aee6ef5 100644 --- a/lib/Image/ExifTool/WritePNG.pl +++ b/lib/Image/ExifTool/WritePNG.pl @@ -130,7 +130,6 @@ sub Add_iCCP($$) if (defined $buff and length $buff and WriteProfile($outfile, 'icm', \$buff)) { $et->VPrint(0, "Created ICC profile\n"); delete $$et{ADD_DIRS}{ICC_Profile}; # don't add it again - $$et{PNGDoneDir}{ICC_Profile} = 2; } } return 1; @@ -144,29 +143,15 @@ sub Add_iCCP($$) sub DoneDir($$$;$) { my ($et, $dir, $outBuff, $nonStandard) = @_; - $dir = 'IFD0' if $dir eq 'EXIF'; + my $saveDir = $dir; + $dir = 'EXIF' if $dir eq 'IFD0'; # don't add this directory again unless this is in a non-standard location - delete $$et{ADD_DIRS}{$dir} unless $nonStandard; - # handle problem with duplicate XMP when using PNGEarlyXMP option - return unless $dir eq 'XMP' and defined $$outBuff and length $$outBuff; - if ($nonStandard and $$et{DEL_GROUP}{$dir}) { + if (not $nonStandard) { + delete $$et{ADD_DIRS}{$dir}; + delete $$et{ADD_DIRS}{IFD0} if $dir eq 'EXIF'; + } elsif ($$et{DEL_GROUP}{$dir} or $$et{DEL_GROUP}{$saveDir}) { $et->VPrint(0," Deleting non-standard $dir\n"); $$outBuff = ''; - } elsif (not $$et{PNGDoneDir}{$dir}) { - $$et{PNGDoneDir}{$dir} = 1; # set flag indicating the directory exists - } elsif ($$et{OPTIONS}{PNGEarlyXMP}) { - if ($$et{PNGDoneDir}{$dir} == 2) { - if ($$et{OPTIONS}{IgnoreMinorErrors}) { - $et->Warn("Deleted existing $dir"); - } else { - $et->Error("Duplicate $dir created. Ignore to delete existing $dir", 1); - return; - } - } elsif ($et->Warn("Duplicate $dir. Ignore to delete", 2)) { - return; # warning not ignored: don't delete the duplicate - } - $et->VPrint(0," Deleting duplicate $dir\n"); - $$outBuff = ''; } } @@ -356,8 +341,6 @@ sub AddChunks($$;@) next; } delete $$et{ADD_DIRS}{$dir}; # don't add again - # keep track of the directories that we added - $$et{PNGDoneDir}{$dir} = 2 if defined $buff and length $buff; } return not $err; } diff --git a/lib/Image/ExifTool/WriteXMP.pl b/lib/Image/ExifTool/WriteXMP.pl index 69a3d1c9..5be06572 100644 --- a/lib/Image/ExifTool/WriteXMP.pl +++ b/lib/Image/ExifTool/WriteXMP.pl @@ -1034,7 +1034,7 @@ sub WriteXMP($$;$) # take attributes from old values if they exist %attrs = %{$$cap[1]}; if ($overwrite) { - my ($oldLang, $delLang, $addLang, @matchingPaths); + my ($oldLang, $delLang, $addLang, @matchingPaths, $langPathPat); # check to see if this is an indexed list item if ($path =~ / /) { my $pp; @@ -1043,9 +1043,15 @@ sub WriteXMP($$;$) } else { push @matchingPaths, $path; } + my $oldOverwrite = $overwrite; foreach $path (@matchingPaths) { my ($val, $attrs) = @{$capture{$path}}; if ($writable eq 'lang-alt') { + # revert to original overwrite flag if this is in a different structure + if (not $langPathPat or $path !~ /^$langPathPat$/) { + $overwrite = $oldOverwrite; + ($langPathPat = $path) =~ s/\d+$/\\d+/; + } unless (defined $addLang) { # add to lang-alt list by default if creating this tag from scratch $addLang = $$nvHash{IsCreating} ? 1 : 0; diff --git a/lib/Image/ExifTool/Writer.pl b/lib/Image/ExifTool/Writer.pl index 80b29ba4..7cd541ef 100644 --- a/lib/Image/ExifTool/Writer.pl +++ b/lib/Image/ExifTool/Writer.pl @@ -916,6 +916,20 @@ TAG: foreach $tagInfo (@matchingTags) { next; } } + # set group delete flag if this tag represents an entire group + if ($$tagInfo{DelGroup} and not $options{DelValue}) { + my @del = ( $tag ); + $$self{DEL_GROUP}{$tag} = 1; + # delete extra groups if necessary + if ($delMore{$tag}) { + $$self{DEL_GROUP}{$_} = 1, push(@del,$_) foreach @{$delMore{$tag}}; + } + # remove all of this group from previous new values + $self->RemoveNewValuesForGroup($tag); + $verbose and print $out " Deleting tags in: @del\n"; + ++$numSet; + next; + } $noConv = 1; # value is not defined, so don't do conversion } # apply inverse PrintConv and ValueConv conversions @@ -3533,10 +3547,11 @@ sub GetNewValueHash($$;$$$$) if ($writeGroup) { # find the new value in the list with the specified write group - # (QuickTime and All are special cases because all group1 tags may be updated at once) - while ($nvHash and $$nvHash{WriteGroup} ne $writeGroup and - $$nvHash{WriteGroup} !~ /^(QuickTime|All)$/) - { + while ($nvHash and $$nvHash{WriteGroup} ne $writeGroup) { + # QuickTime and All are special cases because all group1 tags may be updated at once + last if $$nvHash{WriteGroup} =~ /^(QuickTime|All)$/; + # replace existing entry if WriteGroup is 'All' (avoids confusion of forum10349) + last if $$tagInfo{WriteGroup} and $$tagInfo{WriteGroup} eq 'All'; $nvHash = $$nvHash{Next}; } } @@ -3875,6 +3890,9 @@ sub InitWriteDirs($$;$$) } } $dirName = shift @dirNames; + } elsif ($dirName eq 'QuickTime') { + # write to specific QuickTime group + $dirName = $self->GetGroup($tagInfo, 1); } while ($dirName) { my $parent = $$fileDirs{$dirName}; diff --git a/lib/Image/ExifTool/XMP.pm b/lib/Image/ExifTool/XMP.pm index 8fe2c4d0..ef01116d 100644 --- a/lib/Image/ExifTool/XMP.pm +++ b/lib/Image/ExifTool/XMP.pm @@ -49,7 +49,7 @@ use Image::ExifTool::Exif; use Image::ExifTool::GPS; require Exporter; -$VERSION = '3.24'; +$VERSION = '3.25'; @ISA = qw(Exporter); @EXPORT_OK = qw(EscapeXML UnescapeXML); @@ -2236,7 +2236,7 @@ my %sPantryItem = ( # get latitude/logitude reference from XMP lat/long tags # (used to set EXIF GPS position from XMP tags) GPSLatitudeRef => { - Require => 'XMP:GPSLatitude', + Require => 'XMP-exif:GPSLatitude', # Note: Do not Inihibit based on EXIF:GPSLatitudeRef (see forum10192) ValueConv => q{ IsFloat($val[0]) and return $val[0] < 0 ? "S" : "N"; @@ -2246,7 +2246,7 @@ my %sPantryItem = ( PrintConv => { N => 'North', S => 'South' }, }, GPSLongitudeRef => { - Require => 'XMP:GPSLongitude', + Require => 'XMP-exif:GPSLongitude', ValueConv => q{ IsFloat($val[0]) and return $val[0] < 0 ? "W" : "E"; $val[0] =~ /^.*([EW])/; @@ -2255,7 +2255,7 @@ my %sPantryItem = ( PrintConv => { E => 'East', W => 'West' }, }, GPSDestLatitudeRef => { - Require => 'XMP:GPSDestLatitude', + Require => 'XMP-exif:GPSDestLatitude', ValueConv => q{ IsFloat($val[0]) and return $val[0] < 0 ? "S" : "N"; $val[0] =~ /^.*([NS])/; @@ -2264,7 +2264,7 @@ my %sPantryItem = ( PrintConv => { N => 'North', S => 'South' }, }, GPSDestLongitudeRef => { - Require => 'XMP:GPSDestLongitude', + Require => 'XMP-exif:GPSDestLongitude', ValueConv => q{ IsFloat($val[0]) and return $val[0] < 0 ? "W" : "E"; $val[0] =~ /^.*([EW])/; diff --git a/perl-Image-ExifTool.spec b/perl-Image-ExifTool.spec index 0966e69d..579d7139 100644 --- a/perl-Image-ExifTool.spec +++ b/perl-Image-ExifTool.spec @@ -1,6 +1,6 @@ Summary: perl module for image data extraction Name: perl-Image-ExifTool -Version: 11.57 +Version: 11.61 Release: 1 License: Artistic/GPL Group: Development/Libraries/Perl diff --git a/t/Lang_14.out b/t/Lang_14.out index 8f0d5e20..2cd8131a 100644 --- a/t/Lang_14.out +++ b/t/Lang_14.out @@ -1,43 +1,43 @@ [EXIF, IFD0, Camera] 271 - Производитель: FUJIFILM -[EXIF, IFD0, Camera] 272 - Модель камеры: FinePix2400Zoom -[EXIF, IFD0, Image] 274 - Ориентация: Горизонтальная +[EXIF, IFD0, Camera] 272 - Модель: FinePix2400Zoom +[EXIF, IFD0, Image] 274 - Ориентация: Горизонтальная (обычная) [EXIF, IFD0, Image] 282 - Разрешение по X: 72 [EXIF, IFD0, Image] 283 - Разрешение по Y: 72 [EXIF, IFD0, Image] 296 - Единицы разрешения по X и Y: дюймы -[EXIF, IFD0, Image] 305 - Создано/Редактировано в приложении: Digital Camera FinePix2400Zoom Ver1.70 +[EXIF, IFD0, Image] 305 - Приложение: Digital Camera FinePix2400Zoom Ver1.70 [EXIF, IFD0, Time] 306 - Дата редактирования: 2001:05:19 18:36:41 [EXIF, IFD0, Image] 531 - Положение точки, определяющей цвет в Y Cb Cr: Совместимый [EXIF, IFD0, Author] 33432 - Авторское право: -[EXIF, ExifIFD, Image] 33437 - Диафрагма: 3.5 +[EXIF, ExifIFD, Image] 33437 - Относительное отверстие: 3.5 [EXIF, ExifIFD, Camera] 34850 - Программа экспозиции: Программная автоэкспозиция [EXIF, ExifIFD, Image] 34855 - Значение ISO: 100 [EXIF, ExifIFD, Image] 36864 - Версия Exif: 0210 [EXIF, ExifIFD, Time] 36867 - Дата съёмки: 2001:05:19 18:36:41 [EXIF, ExifIFD, Time] 36868 - Дата создания: 2001:05:19 18:36:41 [EXIF, ExifIFD, Image] 37121 - Параметры каналов: Y, Cb, Cr, - -[EXIF, ExifIFD, Image] 37122 - Сжатые Биты на Пиксель: 1.6 -[EXIF, ExifIFD, Image] 37377 - Выдержка: 1/64 -[EXIF, ExifIFD, Image] 37378 - Диафрагма: 3.5 -[EXIF, ExifIFD, Image] 37379 - Яркость: 2 +[EXIF, ExifIFD, Image] 37122 - Сжатые биты на пиксель: 1.6 +[EXIF, ExifIFD, Image] 37377 - Значение выдержки: 1/64 +[EXIF, ExifIFD, Image] 37378 - Значение диафрагмы: 3.5 +[EXIF, ExifIFD, Image] 37379 - Значение яркость: 2 [EXIF, ExifIFD, Image] 37380 - Компенсация экспозиции: 0 [EXIF, ExifIFD, Camera] 37381 - Максимальное число диафрагмы объектива: 3.5 -[EXIF, ExifIFD, Camera] 37383 - Экспозамер: Оценочный / Многозонный -[EXIF, ExifIFD, Camera] 37385 - Состояние вспышки при съёмке: Вспышка сработала. +[EXIF, ExifIFD, Camera] 37383 - Экспозамер: Оценочный/многозонный +[EXIF, ExifIFD, Camera] 37385 - Состояние вспышки при съёмке: Вспышка сработала [EXIF, ExifIFD, Camera] 37386 - Фокусное расстояние: 6.0 mm -[EXIF, ExifIFD, Image] 40960 - Поддерживаемая версия Flashpix: 0100 +[EXIF, ExifIFD, Image] 40960 - Версия Flashpix: 0100 [EXIF, ExifIFD, Image] 40961 - Цветовое пространство: sRGB -[EXIF, ExifIFD, Image] 40962 - Exif - Ширина изображения: 1600 -[EXIF, ExifIFD, Image] 40963 - Exif - Высота изображения: 1200 -[EXIF, InteropIFD, Image] 1 - Индекс файловой совместимости: R98 - Основной файл DCF (sRGB) +[EXIF, ExifIFD, Image] 40962 - Exif — Ширина изображения: 1600 +[EXIF, ExifIFD, Image] 40963 - Exif — Высота изображения: 1200 +[EXIF, InteropIFD, Image] 1 - Индекс файловой совместимости: R98 — Основной файл DCF (sRGB) [EXIF, InteropIFD, Image] 2 - Версия файловой совместимости: 0100 [EXIF, ExifIFD, Camera] 41486 - Разрешение в фокальной плоскости по X: 3053 [EXIF, ExifIFD, Camera] 41487 - Разрешение в фокальной плоскости по Y: 3053 -[EXIF, ExifIFD, Camera] 41488 - Единицы разрешения в фокальной плоскости: см. +[EXIF, ExifIFD, Camera] 41488 - Единицы разрешения в фокальной плоскости: см [EXIF, ExifIFD, Camera] 41495 - Тип датчика: Одночиповый цветной сенсор [EXIF, ExifIFD, Image] 41728 - Источник файла: Цифровая фотокамера -[EXIF, ExifIFD, Image] 41729 - Тип сцены: Сфотографировано цифровой камерой +[EXIF, ExifIFD, Image] 41729 - Тип сцены: Непосредственно сфотографированная [EXIF, IFD1, Image] 259 - Метод сжатия: JPEG (старый стиль) -[EXIF, IFD1, Image] 274 - Ориентация: Горизонтальная +[EXIF, IFD1, Image] 274 - Ориентация: Горизонтальная (обычная) [EXIF, IFD1, Image] 282 - Разрешение по X: 72 [EXIF, IFD1, Image] 283 - Разрешение по Y: 72 [EXIF, IFD1, Image] 296 - Единицы разрешения по X и Y: дюймы @@ -78,14 +78,7 @@ my $testnum = 1; { ++$testnum; my $exifTool = new Image::ExifTool; - # start with a clean image - $exifTool->SetNewValue('all'); my $image; - $exifTool->WriteInfo('t/images/PNG.png', \$image); - # add new XMP (should go after IDAT) - $exifTool->SetNewValue(); - $exifTool->SetNewValue('XMP:Subject' => 'test'); - $exifTool->WriteInfo(\$image); # delete all XMP then copy back again (should move to before IDAT) $exifTool->SetNewValue(); my $txtfile = "t/${testname}_${testnum}.failed"; @@ -93,8 +86,8 @@ my $testnum = 1; $exifTool->Options(Verbose => 2); $exifTool->Options(TextOut => \*PNG_TEST_5); $exifTool->SetNewValue('xmp:all'); - $exifTool->SetNewValuesFromFile(\$image, 'all:all<xmp:all'); - my $rtnVal = $exifTool->WriteInfo(\$image); + $exifTool->SetNewValuesFromFile('t/images/PNG.png', 'all:all<xmp:all'); + my $rtnVal = $exifTool->WriteInfo('t/images/PNG.png', \$image); close PNG_TEST_5; if (testCompare('t/PNG_5.out', $txtfile, $testnum)) { unlink $txtfile; diff --git a/t/PNG_2.out b/t/PNG_2.out index 4442850c..34d2adf4 100644 --- a/t/PNG_2.out +++ b/t/PNG_2.out @@ -1,10 +1,11 @@ -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.55 +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.58 +[ExifTool, ExifTool, ExifTool] Warning - Warning: XMP found after PNG IDAT [File, System, Image] FileName - File Name: PNG.png [File, System, Image] Directory - Directory: t/images [File, System, Image] FileSize - File Size: 572 bytes [File, System, Time] FileModifyDate - File Modification Date/Time: 2014:07:23 08:09:17-04:00 -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:07:03 11:48:29-04:00 -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:07:02 12:56:21-04:00 +[File, System, Time] FileAccessDate - File Access Date/Time: 2019:07:24 13:11:38-04:00 +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:07:19 09:48:20-04:00 [File, System, Image] FilePermissions - File Permissions: rw-r--r-- [File, File, Image] FileType - File Type: PNG [File, File, Image] FileTypeExtension - File Type Extension: png diff --git a/t/PNG_5.out b/t/PNG_5.out index 74d69a6a..c978ad36 100644 --- a/t/PNG_5.out +++ b/t/PNG_5.out @@ -1,7 +1,8 @@ Deleting tags in: XMP XMP-* Sorry, XMP-x:XMPToolkit is unsafe for writing Writing new tags after deleting groups: XMP XMP-* -Writing XMP-dc:Subject +Writing XMP-dc:Creator +Rewriting t/images/PNG.png... Editing tags in: PNG XMP Creating tags in: PNG XMP FileType = PNG @@ -11,8 +12,9 @@ PNG IHDR (13 bytes): PNG bKGD (2 bytes): Creating XMP iTXt chunk: Creating XMP - + XMP-dc:Subject = 'test' + + XMP-dc:Creator = 'Phil Harvey' PNG IDAT (1 chunk, total 14 bytes) -PNG iTXt (437 bytes): +PNG tEXt (20 bytes): +PNG iTXt (443 bytes): Deleting XMP PNG IEND (end of image) diff --git a/t/TestLib.pm b/t/TestLib.pm index 9485388b..85c7fd4a 100644 --- a/t/TestLib.pm +++ b/t/TestLib.pm @@ -429,6 +429,7 @@ sub testVerbose($$$$) } $\ = $oldSep; # restore output line separator close(TESTFILE); + close(TMPFILE); unlink("$testfile.tmp"); return testCompare("$testfile.out","$testfile.failed",$testnum); } @@ -2,7 +2,7 @@ # After "make install" it should work as "perl t/XMP.t". BEGIN { - $| = 1; print "1..48\n"; $Image::ExifTool::configFile = ''; + $| = 1; print "1..49\n"; $Image::ExifTool::configFile = ''; require './t/TestLib.pm'; t::TestLib->import(); } END {print "not ok 1\n" unless $loaded;} @@ -621,6 +621,21 @@ my $testnum = 1; print 'not '; } print "ok $testnum\n"; + + ++$testnum; + $exifTool->SetNewValue(); + $exifTool->SetNewValue('AboutCvTermName' => 'one,three', DelValue => 1); + $exifTool->SetNewValue('AboutCvTermName' => 'a,b,c'); + $testfile = "t/${testname}_${testnum}_failed.xmp"; + unlink $testfile; + writeInfo($exifTool, 't/images/XMP8.xmp', $testfile); + $info = $exifTool->ImageInfo($testfile, 'XMP:all'); + if (check($exifTool, $info, $testname, $testnum)) { + unlink $testfile; + } else { + print 'not '; + } + print "ok $testnum\n"; } diff --git a/t/XMP_49.out b/t/XMP_49.out new file mode 100644 index 00000000..4b851046 --- /dev/null +++ b/t/XMP_49.out @@ -0,0 +1,2 @@ +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.58 +[XMP, XMP-iptcExt, Author] AboutCvTerm - About Cv Term: [{CvId=1,CvTermName=a},{CvId=2,CvTermName=two},{CvId=3,CvTermName=b},{CvTermName=c}] diff --git a/t/images/XMP8.xmp b/t/images/XMP8.xmp new file mode 100644 index 00000000..69c7780a --- /dev/null +++ b/t/images/XMP8.xmp @@ -0,0 +1,38 @@ +<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?> +<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 11.58'> +<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'> + + <rdf:Description rdf:about='' + xmlns:Iptc4xmpExt='http://iptc.org/std/Iptc4xmpExt/2008-02-29/'> + <Iptc4xmpExt:AboutCvTerm> + <rdf:Bag> + <rdf:li rdf:parseType='Resource'> + <Iptc4xmpExt:CvId>1</Iptc4xmpExt:CvId> + <Iptc4xmpExt:CvTermName> + <rdf:Alt> + <rdf:li xml:lang='x-default'>one</rdf:li> + </rdf:Alt> + </Iptc4xmpExt:CvTermName> + </rdf:li> + <rdf:li rdf:parseType='Resource'> + <Iptc4xmpExt:CvId>2</Iptc4xmpExt:CvId> + <Iptc4xmpExt:CvTermName> + <rdf:Alt> + <rdf:li xml:lang='x-default'>two</rdf:li> + </rdf:Alt> + </Iptc4xmpExt:CvTermName> + </rdf:li> + <rdf:li rdf:parseType='Resource'> + <Iptc4xmpExt:CvId>3</Iptc4xmpExt:CvId> + <Iptc4xmpExt:CvTermName> + <rdf:Alt> + <rdf:li xml:lang='x-default'>three</rdf:li> + </rdf:Alt> + </Iptc4xmpExt:CvTermName> + </rdf:li> + </rdf:Bag> + </Iptc4xmpExt:AboutCvTerm> + </rdf:Description> +</rdf:RDF> +</x:xmpmeta> +<?xpacket end='w'?>
\ No newline at end of file |