summaryrefslogtreecommitdiff
path: root/lib/Image/ExifTool
diff options
context:
space:
mode:
authorexiftool <phil@work3.phy.queensu.ca>2017-07-21 08:11:15 -0400
committerexiftool <phil@work3.phy.queensu.ca>2017-07-21 08:11:15 -0400
commit03c3b7e1e9eb64cf39fc5e8282bd5e3e04960f13 (patch)
tree14982153a9a1496d44dc2f8cf2b67cb587c57403 /lib/Image/ExifTool
parent62ad2a0dd008ed6cc793703a9f8ede109326533b (diff)
Update to 10.60
Diffstat (limited to 'lib/Image/ExifTool')
-rw-r--r--lib/Image/ExifTool/BuildTagLookup.pm7
-rw-r--r--lib/Image/ExifTool/Canon.pm1
-rw-r--r--lib/Image/ExifTool/Exif.pm1
-rw-r--r--lib/Image/ExifTool/FLIR.pm3
-rwxr-xr-x[-rw-r--r--]lib/Image/ExifTool/Lang/de.pm62
-rw-r--r--lib/Image/ExifTool/Minolta.pm68
-rw-r--r--lib/Image/ExifTool/PNG.pm7
-rw-r--r--lib/Image/ExifTool/Pentax.pm3
-rw-r--r--lib/Image/ExifTool/Sony.pm52
-rw-r--r--lib/Image/ExifTool/TagNames.pod10
-rw-r--r--lib/Image/ExifTool/Writer.pl52
11 files changed, 150 insertions, 116 deletions
diff --git a/lib/Image/ExifTool/BuildTagLookup.pm b/lib/Image/ExifTool/BuildTagLookup.pm
index 9bf75570..6c5e40eb 100644
--- a/lib/Image/ExifTool/BuildTagLookup.pm
+++ b/lib/Image/ExifTool/BuildTagLookup.pm
@@ -34,7 +34,7 @@ use Image::ExifTool::Nikon;
use Image::ExifTool::Validate;
use Image::ExifTool::MacOS;
-$VERSION = '3.09';
+$VERSION = '3.10';
@ISA = qw(Exporter);
sub NumbersFirst($$);
@@ -240,6 +240,11 @@ The EXIF meta information is organized into different Image File Directories
ExifTool family 1 group names. When writing EXIF information, the default
B<Group> listed below is used unless another group is specified.
+Mandatory tags (indicated by a colon after the B<Writable> type) may be
+added automatically with default values when creating a new IFD, and the IFD
+is removed automatically when deleting tags if only default-valued mandatory
+tags remain.
+
The table below lists all EXIF tags. Also listed are TIFF, DNG, HDP and
other tags which are not part of the EXIF specification, but may co-exist
with EXIF tags in some images. Tags which are part of the EXIF 2.31
diff --git a/lib/Image/ExifTool/Canon.pm b/lib/Image/ExifTool/Canon.pm
index c668cd3f..633381f6 100644
--- a/lib/Image/ExifTool/Canon.pm
+++ b/lib/Image/ExifTool/Canon.pm
@@ -144,6 +144,7 @@ $VERSION = '3.78';
# 27 => 'Carl Zeiss Distagon T* 28mm f/2 ZF', #PH (must be with an adapter, because the ZF version is a Nikon mount)
# 27 => 'EMF adapter for Canon EOS digital cameras', #50 (reports MaxFocalLength of 65535)
# 27 => optix adapter
+ # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
28 => 'Canon EF 80-200mm f/4.5-5.6 or Tamron Lens', #32
28.1 => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF', #15
28.2 => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro', #4
diff --git a/lib/Image/ExifTool/Exif.pm b/lib/Image/ExifTool/Exif.pm
index 1de14bb9..16f89352 100644
--- a/lib/Image/ExifTool/Exif.pm
+++ b/lib/Image/ExifTool/Exif.pm
@@ -5093,6 +5093,7 @@ sub ExifTime($)
#------------------------------------------------------------------------------
# Generate TIFF file from scratch (in current byte order)
# Inputs: 0) hash of IFD entries (TagID => Value; multiple values space-delimited)
+# 1) raw image data reference
# Returns: TIFF image data, or undef on error
sub GenerateTIFF($$)
{
diff --git a/lib/Image/ExifTool/FLIR.pm b/lib/Image/ExifTool/FLIR.pm
index 5afeabb9..e2b8f623 100644
--- a/lib/Image/ExifTool/FLIR.pm
+++ b/lib/Image/ExifTool/FLIR.pm
@@ -1222,8 +1222,7 @@ sub GetImageType($$$)
} elsif (length $val != $w * $h * 2) {
$et->Warn("Unrecognized FLIR $tag data format");
} elsif (GetByteOrder() eq 'II') {
- require Image::ExifTool::Sony;
- $val = Image::ExifTool::Sony::MakeTiffHeader($w,$h,1,16) . $val;
+ $val = Image::ExifTool::MakeTiffHeader($w,$h,1,16) . $val;
$type = 'TIFF';
} else {
$et->Warn("Don't yet support big-endian TIFF $tag");
diff --git a/lib/Image/ExifTool/Lang/de.pm b/lib/Image/ExifTool/Lang/de.pm
index 54986340..5c77a36e 100644..100755
--- a/lib/Image/ExifTool/Lang/de.pm
+++ b/lib/Image/ExifTool/Lang/de.pm
@@ -11,7 +11,7 @@ package Image::ExifTool::Lang::de;
use strict;
use vars qw($VERSION);
-$VERSION = '1.32';
+$VERSION = '1.33';
%Image::ExifTool::Lang::de::Translate = (
'AEAperture' => 'AE-Blende',
@@ -1094,7 +1094,7 @@ $VERSION = '1.32';
},
'Artist' => 'Künstler',
'ArtworkCreator' => 'Artwork Ersteller',
- 'AsShotICCProfile' => 'Aufnahme ICC-Profil',
+ 'AsShotICCProfile' => 'Aufnahme Farbprofil',
'AsShotNeutral' => 'Aufnahme Neutral',
'AsShotPreProfileMatrix' => 'Aufnahme Pre Profil Matrix',
'AsShotProfileName' => 'Aufnahme Pre Profilname',
@@ -2334,7 +2334,7 @@ $VERSION = '1.32';
'Country' => 'Land',
'Country-PrimaryLocationCode' => 'ISO-Ländercode',
'Country-PrimaryLocationName' => 'Land',
- 'CountryCode' => 'Länderkennzeichen',
+ 'CountryCode' => 'ISO-Ländercode',
'Coverage' => 'Anwendungsbereich',
'CreateDate' => 'Digitalisierungsdatum/-uhrzeit',
'CreationDate' => 'Aufnahmedatum',
@@ -2376,8 +2376,8 @@ $VERSION = '1.32';
'CreatorContactInfo' => 'Ersteller Kontaktinfo',
'CreatorCountry' => 'Ersteller - Land',
'CreatorPostalCode' => 'Ersteller - PLZ',
- 'CreatorRegion' => 'Ersteller - Staat/Provinz',
- 'CreatorTool' => 'Erzeugertool',
+ 'CreatorRegion' => 'Ersteller - Bundesland/Kanton',
+ 'CreatorTool' => 'Erstellertool',
'CreatorWorkEmail' => 'Ersteller - E-Mail',
'CreatorWorkTelephone' => 'Ersteller - Telefon',
'CreatorWorkURL' => 'Ersteller - Webseite(n)',
@@ -3651,7 +3651,7 @@ $VERSION = '1.32';
'FirmwareVersion' => 'Firmware-Version',
'FixtureIdentifier' => 'Kennzeichnung',
'Flash' => {
- Description => 'Blitz',
+ Description => 'Blitzmodus',
PrintConv => {
'Auto, Did not fire' => 'Blitz wurde nicht ausgelöst, Automodus',
'Auto, Did not fire, Red-eye reduction' => 'Blitz wurde nicht ausgelöst, Rote-Augen-Reduzierung',
@@ -4277,9 +4277,9 @@ $VERSION = '1.32';
},
'GEImageSize' => 'GE Bildgröße',
'GIFVersion' => 'GIF-Version',
- 'GPSAltitude' => 'Höhe',
+ 'GPSAltitude' => 'GPS Höhe',
'GPSAltitudeRef' => {
- Description => 'Bezugshöhe',
+ Description => 'GPS-Höhe Bezug',
PrintConv => {
'Above Sea Level' => 'Höhe über Normal-Null (Meeresspiegel)',
'Below Sea Level' => 'Höhe unter Normal-Null (Meeresspiegel)',
@@ -4288,7 +4288,7 @@ $VERSION = '1.32';
'GPSAreaInformation' => 'Name des GPS-Gebietes',
'GPSDOP' => 'Messgenauigkeit',
'GPSDateStamp' => 'GPS Datum',
- 'GPSDateTime' => 'GPS-Zeit (Atomuhr)',
+ 'GPSDateTime' => 'GPS Zeitstempel',
'GPSDestBearing' => 'Motivrichtung',
'GPSDestBearingRef' => {
Description => 'Referenz für Motivrichtung',
@@ -4297,9 +4297,9 @@ $VERSION = '1.32';
'True North' => 'Geographische Ausrichtung',
},
},
- 'GPSDestDistance' => 'Distanz zum Ziel',
+ 'GPSDestDistance' => 'GPS Zielentfernung',
'GPSDestDistanceRef' => {
- Description => 'Reference for distance to destination',
+ Description => 'GPS-Zielentfernung Maßeinheit',
PrintConv => {
'Kilometers' => 'Kilometer',
'Miles' => 'Meilen',
@@ -4323,7 +4323,7 @@ $VERSION = '1.32';
},
},
'GPSDifferential' => {
- Description => 'GPS-Differentialkorrektur',
+ Description => 'GPS Differentialkorrektur',
PrintConv => {
'Differential Corrected' => 'Differentialkorrektur angewandt',
'No Correction' => 'Messung ohne Differentialkorrektur',
@@ -4356,7 +4356,7 @@ $VERSION = '1.32';
},
'GPSMapDatum' => 'Geodätisches Datum',
'GPSMeasureMode' => {
- Description => 'GPS-Messverfahren',
+ Description => 'GPS Messverfahren',
PrintConv => {
'2-D' => '2-Dimensionale Messung',
'2-Dimensional' => '2-Dimensionale Messung',
@@ -4378,13 +4378,13 @@ $VERSION = '1.32';
},
},
'GPSStatus' => {
- Description => 'GPS-Empfänger-Status',
+ Description => 'GPS-Empfänger Status',
PrintConv => {
'Measurement Active' => 'Messung aktiv',
'Measurement Void' => 'Messung ungültig',
},
},
- 'GPSTimeStamp' => 'GPS-Zeit (Atomuhr)',
+ 'GPSTimeStamp' => 'GPS-Zeit UTC',
'GPSTrack' => 'Bewegungsrichtung',
'GPSTrackRef' => {
Description => 'Referenz für Bewegungsrichtung',
@@ -4468,7 +4468,7 @@ $VERSION = '1.32';
},
'Headline' => 'Überschrift',
'HeightResolution' => 'Vertikale Bildauflösung',
- 'HierarchicalSubject' => 'Hierarchische Schlüsselworte',
+ 'HierarchicalSubject' => 'Hierarchische Schlüsselwörter',
'HighISONoiseReduction' => {
Description => 'Rauschunterdrückung bei hoher Empfindlichkeit',
PrintConv => {
@@ -4536,7 +4536,7 @@ $VERSION = '1.32';
'HuffmanTable' => 'Huffman Tabelle',
'HyperfocalDistance' => 'Hyperfokale Entfernung',
'ICCProfile' => 'ICC-Profil',
- 'ICCProfileName' => 'Name des ICC-Profils',
+ 'ICCProfileName' => 'ICC-Profil Name',
'ICC_Profile' => 'ICC-Profil',
'ID3Size' => 'ID3 Datenlänge',
'IDCCreativeStyle' => {
@@ -4862,7 +4862,7 @@ $VERSION = '1.32';
},
},
'Instructions' => 'Anweisungen',
- 'IntellectualGenre' => 'Genre',
+ 'IntellectualGenre' => 'Intellektuelles Genre',
'IntelligentAuto' => {
PrintConv => {
'Advanced' => 'Erweitert',
@@ -4954,7 +4954,7 @@ $VERSION = '1.32';
'InternalName' => 'Interner Name',
'InternalSerialNumber' => 'Interne Seriennummer',
'InteropIndex' => {
- Description => 'Interoperabilitäts-Identifikation',
+ Description => 'Interoperabilität Identifikation',
PrintConv => {
'R03 - DCF option file (Adobe RGB)' => 'R03: DCF Option-Format (Adobe RGB)',
'R98 - DCF basic file (sRGB)' => 'R98: DCF Basic-Format (sRGB)',
@@ -4998,14 +4998,14 @@ $VERSION = '1.32';
},
'JPEGSize' => 'JPEG Größe',
'JPEGTables' => 'JPEG Tabellen',
- 'JobID' => 'Job-ID',
+ 'JobID' => 'Job-Kennung',
'JpgFromRaw' => 'Jpg From Raw Bild',
'JpgFromRawLength' => 'Jpg From Raw Datenlänge',
'JpgFromRawStart' => 'Jpg From Raw Datenposition',
'JpgRecordedPixels' => 'JPEG-Auflösung',
'Key' => 'Schlüssel',
'Keyword' => 'Schlüsselwort',
- 'Keywords' => 'Schlüsselwort',
+ 'Keywords' => 'Schlüsselwörter',
'KodakImageHeight' => 'Kodak-Bildhöhe',
'KodakImageWidth' => 'Kodak-Bildbreite',
'LC1' => 'Objektiv-Wert',
@@ -5054,7 +5054,7 @@ $VERSION = '1.32';
'On' => 'Ein',
},
},
- 'Label' => 'Bezeichnung',
+ 'Label' => 'Beschriftung',
'Landmark' => 'Sehenswürdigkeit',
'Language' => 'Sprache',
'LanguageCode' => {
@@ -6051,7 +6051,7 @@ $VERSION = '1.32';
'OriginalTHMFileType' => 'Original THM Dateityp',
'OriginalTHMImage' => 'Original THM Bild',
'OriginalTHMResource' => 'Original THM Basisdaten',
- 'OriginalTransmissionReference' => 'Jobkennung',
+ 'OriginalTransmissionReference' => 'Anbietervermerk Verweis',
'OriginatingProgram' => 'Erstellungsprogramm',
'OtherImage' => 'Other Image Vorschaubild',
'OtherImageLength' => 'OtherImage Datenlänge',
@@ -6511,7 +6511,7 @@ $VERSION = '1.32';
'ProcessingInfo' => 'Verarbeitungsinformationen',
'ProcessingSoftware' => 'Verarbeitungssoftware',
'Producer' => 'Produzent',
- 'ProducerKeywords' => 'Hersteller Schlüsselwort',
+ 'ProducerKeywords' => 'Hersteller Schlüsselwörter',
'Producers' => 'Produzent',
'ProductID' => 'Produkt-ID',
'ProductionCode' => 'Herstellungskennzeichen',
@@ -6533,8 +6533,8 @@ $VERSION = '1.32';
'ProfileCopyright' => 'Urheberrechtsvermerk',
'ProfileCreator' => 'Profilersteller',
'ProfileDateTime' => 'Profil-Erstellungszeit',
- 'ProfileDescription' => 'Profil-Beschreibung',
- 'ProfileDescriptionML' => 'Profil-Beschreibung ML',
+ 'ProfileDescription' => 'Farbprofil Name',
+ 'ProfileDescriptionML' => 'Farbprofil Name mehrsprachig',
'ProfileFileSignature' => 'Profil-Datei-Signatur',
'ProfileID' => 'Profile-ID',
'ProfileSequenceDesc' => 'Profilsequenz-Beschreibung',
@@ -7722,9 +7722,9 @@ $VERSION = '1.32';
'Monochrome' => 'Monochrom',
},
},
- 'Subject' => 'Thema',
+ 'Subject' => 'Themen/Schlüsselwörter',
'SubjectArea' => 'Hauptobjektposition',
- 'SubjectCode' => 'Themencode',
+ 'SubjectCode' => 'IPTC Themencode',
'SubjectDistance' => 'Objektentfernung',
'SubjectDistanceRange' => {
Description => 'Objektdistanzbereich',
@@ -8092,7 +8092,7 @@ $VERSION = '1.32';
'Rotate 90 CW' => '90° im Uhrzeigersinn',
},
},
- 'TransmissionReference' => 'Übertragungsbezug',
+ 'TransmissionReference' => 'Anbietervermerk',
'Trapped' => {
PrintConv => {
'Unknown' => 'Unbekannt',
@@ -8198,7 +8198,7 @@ $VERSION = '1.32';
'Enable' => 'Möglich',
},
},
- 'UsageTerms' => 'Verwendungsvorschriften',
+ 'UsageTerms' => 'Nutzungsbedingungen',
'UserComment' => 'Benutzerkommentar',
'UserDef1PictureStyle' => {
Description => 'Bildstil Benutzerdefiniert 1',
@@ -8632,7 +8632,7 @@ $VERSION = '1.32';
'XMP' => 'XMP Metadaten',
'XPAuthor' => 'XP Autor',
'XPComment' => 'XP Kommentar',
- 'XPKeywords' => 'XP Schlüsselwort',
+ 'XPKeywords' => 'XP Schlüsselwörter',
'XPSubject' => 'XP Thema',
'XPTitle' => 'XP Titel',
'XResolution' => 'Horizontale Bildauflösung',
diff --git a/lib/Image/ExifTool/Minolta.pm b/lib/Image/ExifTool/Minolta.pm
index 72346a58..ba3b4b2a 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.52';
+$VERSION = '2.53';
# Full list of product codes for Sony-compatible Minolta lenses
# (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
@@ -576,43 +576,45 @@ $VERSION = '2.52';
'65535.42' => 'Sony FE 16-35mm F2.8 GM', #JR (32831 - SEL1635GM)
'65535.43' => 'Sony FE 70-200mm F2.8 GM OSS + 1.4X Teleconverter', #JR (33072 - SEL70200GM + SEL14TC)
'65535.44' => 'Sony FE 70-200mm F2.8 GM OSS + 2X Teleconverter', #JR (33073 - SEL70200GM + SEL20TC)
+ '65535.45' => 'Sony FE 100-400mm F4.5-5.6 GM OSS + 1.4X Teleconverter', #JR (33077 - SEL100400GM + SEL14TC)
+ '65535.46' => 'Sony FE 100-400mm F4.5-5.6 GM OSS + 2X Teleconverter', #JR (33078 - SEL100400GM + SEL20TC)
#
# 3rd party E lenses
#
- '65535.45' => 'Samyang AF 50mm F1.4 FE', #JR (32789)
- '65535.46' => 'Samyang AF 14mm F2.8 FE', #JR (32790 and 51505)
- '65535.47' => 'Samyang AF 35mm F2.8 FE', #PH (51505)
- '65535.48' => 'Sigma 19mm F2.8 [EX] DN', #JR (0)
- '65535.49' => 'Sigma 30mm F2.8 [EX] DN', #JR (0)
- '65535.50' => 'Sigma 60mm F2.8 DN', #JR (0)
- '65535.51' => 'Sigma 30mm F1.4 DC DN | C 016', #IB (50480)
- '65535.52' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #JR (0 - Model B011)
- '65535.53' => 'Tokina Firin 20mm F2 FE MF', #JR (0)
- '65535.54' => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR (50992)
- '65535.55' => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB (50993)
- '65535.56' => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB (50994)
- '65535.57' => 'Voigtlander NOKTON 40mm F1.2', #JR (50996)
- '65535.58' => 'Zeiss Touit 12mm F2.8', #JR (49201 or 0)
- '65535.59' => 'Zeiss Touit 32mm F1.8', #JR (49202 or 0)
- '65535.60' => 'Zeiss Touit 50mm F2.8 Macro', #JR (49203 or 0)
- '65535.61' => 'Zeiss Batis 25mm F2', #JR (49216)
- '65535.62' => 'Zeiss Batis 85mm F1.8', #JR (49217)
- '65535.63' => 'Zeiss Batis 18mm F2.8', #IB (49218)
- '65535.64' => 'Zeiss Batis 135mm F2.8', #IB (49219)
- '65535.65' => 'Zeiss Loxia 50mm F2', #JR (49232 or 0)
- '65535.66' => 'Zeiss Loxia 35mm F2', #JR (49233 or 0)
- '65535.67' => 'Zeiss Loxia 21mm F2.8', #JR (49234)
- '65535.68' => 'Zeiss Loxia 85mm F2.4', #JR (49235)
+ '65535.47' => 'Samyang AF 50mm F1.4 FE', #JR (32789)
+ '65535.48' => 'Samyang AF 14mm F2.8 FE', #JR (32790 and 51505)
+ '65535.49' => 'Samyang AF 35mm F2.8 FE', #PH (51505)
+ '65535.50' => 'Sigma 19mm F2.8 [EX] DN', #JR (0)
+ '65535.51' => 'Sigma 30mm F2.8 [EX] DN', #JR (0)
+ '65535.52' => 'Sigma 60mm F2.8 DN', #JR (0)
+ '65535.53' => 'Sigma 30mm F1.4 DC DN | C 016', #IB (50480)
+ '65535.54' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #JR (0 - Model B011)
+ '65535.55' => 'Tokina Firin 20mm F2 FE MF', #JR (0)
+ '65535.56' => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR (50992)
+ '65535.57' => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB (50993)
+ '65535.58' => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB (50994)
+ '65535.59' => 'Voigtlander NOKTON 40mm F1.2', #JR (50996)
+ '65535.60' => 'Zeiss Touit 12mm F2.8', #JR (49201 or 0)
+ '65535.61' => 'Zeiss Touit 32mm F1.8', #JR (49202 or 0)
+ '65535.62' => 'Zeiss Touit 50mm F2.8 Macro', #JR (49203 or 0)
+ '65535.63' => 'Zeiss Batis 25mm F2', #JR (49216)
+ '65535.64' => 'Zeiss Batis 85mm F1.8', #JR (49217)
+ '65535.65' => 'Zeiss Batis 18mm F2.8', #IB (49218)
+ '65535.66' => 'Zeiss Batis 135mm F2.8', #IB (49219)
+ '65535.67' => 'Zeiss Loxia 50mm F2', #JR (49232 or 0)
+ '65535.68' => 'Zeiss Loxia 35mm F2', #JR (49233 or 0)
+ '65535.69' => 'Zeiss Loxia 21mm F2.8', #JR (49234)
+ '65535.70' => 'Zeiss Loxia 85mm F2.4', #JR (49235)
#
# other lenses
#
- '65535.69' => 'Arax MC 35mm F2.8 Tilt+Shift', #JD
- '65535.70' => 'Arax MC 80mm F2.8 Tilt+Shift', #JD
- '65535.71' => 'Zenitar MF 16mm F2.8 Fisheye M42', #JD
- '65535.72' => 'Samyang 500mm Mirror F8.0', #19
- '65535.73' => 'Pentacon Auto 135mm F2.8', #19
- '65535.74' => 'Pentacon Auto 29mm F2.8', #19
- '65535.75' => 'Helios 44-2 58mm F2.0', #19
+ '65535.71' => 'Arax MC 35mm F2.8 Tilt+Shift', #JD
+ '65535.72' => 'Arax MC 80mm F2.8 Tilt+Shift', #JD
+ '65535.73' => 'Zenitar MF 16mm F2.8 Fisheye M42', #JD
+ '65535.74' => 'Samyang 500mm Mirror F8.0', #19
+ '65535.75' => 'Pentacon Auto 135mm F2.8', #19
+ '65535.76' => 'Pentacon Auto 29mm F2.8', #19
+ '65535.77' => 'Helios 44-2 58mm F2.0', #19
);
%minoltaTeleconverters = (
@@ -2719,7 +2721,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
return \ "Binary data 7404 bytes" unless $et->Options('Binary');
my @dat = unpack('n*', $val); # for Big-endian
# TIFF header for a 16-bit RGB 10dpi 40x30 image
- $val = Image::ExifTool::Sony::MakeTiffHeader(40,30,3,16,10);
+ $val = Image::ExifTool::MakeTiffHeader(40,30,3,16,10);
# re-order data to RGB pixels
my ($i, @val);
for ($i=0; $i<40*30; ++$i) {
diff --git a/lib/Image/ExifTool/PNG.pm b/lib/Image/ExifTool/PNG.pm
index d5de3060..edeb27db 100644
--- a/lib/Image/ExifTool/PNG.pm
+++ b/lib/Image/ExifTool/PNG.pm
@@ -26,7 +26,7 @@ use strict;
use vars qw($VERSION $AUTOLOAD %stdCase);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.43';
+$VERSION = '1.44';
sub ProcessPNG_tEXt($$$);
sub ProcessPNG_iTXt($$$);
@@ -258,10 +258,7 @@ $Image::ExifTool::PNG::colorType = -1;
# eXIf
$stdCase{exif} => {
Name => $stdCase{exif},
- Notes => q{
- proposed but not yet registered. This is where ExifTool will create new
- EXIF
- },
+ Notes => 'this is where ExifTool will create new EXIF',
SubDirectory => {
TagTable => 'Image::ExifTool::Exif::Main',
DirName => 'EXIF', # (to write as a block)
diff --git a/lib/Image/ExifTool/Pentax.pm b/lib/Image/ExifTool/Pentax.pm
index 723c5a7d..13232294 100644
--- a/lib/Image/ExifTool/Pentax.pm
+++ b/lib/Image/ExifTool/Pentax.pm
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
use Image::ExifTool::HP;
-$VERSION = '3.17';
+$VERSION = '3.18';
sub CryptShutterCount($$);
sub PrintFilter($$$);
@@ -325,6 +325,7 @@ sub DecodeAFPoints($$$$;$);
'8 30' => 'Sigma 17-70mm F2.8-4 DC Macro HSM | C', #27
'8 31' => 'Sigma 18-35mm F1.8 DC HSM', #27
'8 32' => 'Sigma 30mm F1.4 DC HSM | A', #27
+ '8 33' => 'Sigma 18-200mm F3.5-6.3 DC MACRO HSM', #DieterPearcey (C014)
'8 34' => 'Sigma 18-300mm F3.5-6.3 DC Macro HSM', #NJ
'8 59' => 'HD PENTAX-D FA 150-450mm F4.5-5.6 ED DC AW', #29
'8 60' => 'HD PENTAX-D FA* 70-200mm F2.8 ED DC AW', #29
diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm
index af1840d7..d6d5a839 100644
--- a/lib/Image/ExifTool/Sony.pm
+++ b/lib/Image/ExifTool/Sony.pm
@@ -31,7 +31,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::Minolta;
-$VERSION = '2.63';
+$VERSION = '2.64';
sub ProcessSRF($$$);
sub ProcessSR2($$$);
@@ -45,7 +45,6 @@ sub ConvLensSpec($);
sub ConvInvLensSpec($);
sub PrintLensSpec($);
sub PrintInvLensSpec($;$$);
-sub MakeTiffHeader($$$$;$);
# (%sonyLensTypes is filled in based on Minolta LensType's)
@@ -58,6 +57,7 @@ my %sonyLensTypes2 = (
2 => 'Sony LA-EA2 Adapter',
3 => 'Sony LA-EA3 Adapter', #(NC) ILCE-7 image with A-mount lens, but also has 0x940e 2nd byte=2
6 => 'Sony LA-EA4 Adapter', #(NC) ILCE-7R image with A-mount lens and having phase-detect info blocks in 0x940e AFInfo
+ # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
44 => 'Metabones Canon EF Smart Adapter', #JR
78 => 'Metabones Canon EF Smart Adapter Mark III or Other Adapter', #PH/JR (also Mark IV, Fotodiox and Viltrox)
234 => 'Metabones Canon EF Smart Adapter Mark IV', #JR
@@ -117,6 +117,8 @@ my %sonyLensTypes2 = (
33072 => 'Sony FE 70-200mm F2.8 GM OSS + 1.4X Teleconverter', #JR
33073 => 'Sony FE 70-200mm F2.8 GM OSS + 2X Teleconverter', #JR
33076 => 'Sony FE 100mm F2.8 STF GM OSS (macro mode)', #JR (with macro switching ring set to "0.57m - 1.0m")
+ 33077 => 'Sony FE 100-400mm F4.5-5.6 GM OSS + 1.4X Teleconverter', #JR
+ 33078 => 'Sony FE 100-400mm F4.5-5.6 GM OSS + 2X Teleconverter', #JR
49201 => 'Zeiss Touit 12mm F2.8', #JR (lens firmware Ver.02)
49202 => 'Zeiss Touit 32mm F1.8', #JR (lens firmware Ver.02)
@@ -2715,7 +2717,7 @@ my %meterInfo2 = (
return \ "Binary data 7404 bytes" unless $et->Options('Binary');
my @dat = unpack('n*', $val);
# TIFF header for a 16-bit RGB 10dpi 40x30 image
- $val = MakeTiffHeader(40,30,3,16,10);
+ $val = Image::ExifTool::MakeTiffHeader(40,30,3,16,10);
# re-order data to RGB pixels
my ($i, @val);
for ($i=0; $i<40*30; ++$i) {
@@ -2775,7 +2777,7 @@ my %meterInfo2 = (
return \ "Binary data 7404 bytes" unless $et->Options('Binary');
my @dat = unpack('v*', $val);
# TIFF header for a 16-bit RGB 10dpi 40x30 image
- $val = MakeTiffHeader(40,30,3,16,10);
+ $val = Image::ExifTool::MakeTiffHeader(40,30,3,16,10);
# re-order data to RGB pixels
my ($i, @val);
for ($i=0; $i<40*30; ++$i) {
@@ -8467,7 +8469,7 @@ my %pictureProfile2010 = (
return \ "Binary data 2640 bytes" unless $et->Options('Binary');
my @dat = unpack('v*', $val);
# TIFF header for a 16-bit RGB 10dpi 44x30 image
- $val = MakeTiffHeader(44,30,3,16,10);
+ $val = Image::ExifTool::MakeTiffHeader(44,30,3,16,10);
# re-order data to RGB pixels - use same value for R, G and B
my ($i, @val);
for ($i=0; $i<44*30; ++$i) {
@@ -9268,44 +9270,6 @@ sub ProcessSonyPIC($$$)
}
#------------------------------------------------------------------------------
-# Make TIFF header for raw data
-# Inputs: 0) width, 1) height, 2) num colour components, 3) bits, 4) resolution
-# Returns: TIFF header
-# Notes: Multi-byte data must be little-endian
-sub MakeTiffHeader($$$$;$)
-{
- my ($w, $h, $cols, $bits, $res) = @_;
- $res or $res = 72;
- my $saveOrder = GetByteOrder();
- SetByteOrder('II');
- my $hdr =
- "\x49\x49\x2a\0\x08\0\0\0\x0e\0" . # 0x00 14 menu entries:
- "\xfe\x00\x04\0\x01\0\0\0\x00\0\0\0" . # 0x0a SubfileType = 0
- "\x00\x01\x04\0\x01\0\0\0" . Set32u($w) . # 0x16 ImageWidth
- "\x01\x01\x04\0\x01\0\0\0" . Set32u($h) . # 0x22 ImageHeight
- "\x02\x01\x03\0" . Set32u($cols) . # 0x2e BitsPerSample
- Set32u($cols == 1 ? $bits : 0xb6) .
- "\x03\x01\x03\0\x01\0\0\0\x01\0\0\0" . # 0x3a Compression = 1
- "\x06\x01\x03\0\x01\0\0\0" . # 0x46 PhotometricInterpretation
- Set32u($cols == 1 ? 1 : 2) .
- "\x11\x01\x04\0\x01\0\0\0\xcc\0\0\0" . # 0x52 StripOffsets = 0xcc
- "\x15\x01\x03\0\x01\0\0\0" . Set32u($cols) .# 0x5e SamplesPerPixel
- "\x16\x01\x04\0\x01\0\0\0" . Set32u($h) . # 0x6a RowsPerStrip
- "\x17\x01\x04\0\x01\0\0\0" . # 0x76 StripByteCounts
- Set32u($w * $h * $cols * int(($bits+7)/8)) .
- "\x1a\x01\x05\0\x01\0\0\0\xbc\0\0\0" . # 0x82 XResolution
- "\x1b\x01\x05\0\x01\0\0\0\xc4\0\0\0" . # 0x8e YResolution
- "\x1c\x01\x03\0\x01\0\0\0\x01\0\0\0" . # 0x9a PlanarConfiguration = 1
- "\x28\x01\x03\0\x01\0\0\0\x02\0\0\0" . # 0xa6 ResolutionUnit = 2
- "\0\0\0\0" . # 0xb2 (no IFD1)
- (Set16u($bits) x 3) . # 0xb6 BitsPerSample value
- Set32u($res) . "\x01\0\0\0" . # 0xbc XResolution = 72
- Set32u($res) . "\x01\0\0\0"; # 0xc4 YResolution = 72
- SetByteOrder($saveOrder); # 0xcc (data goes here)
- return $hdr;
-}
-
-#------------------------------------------------------------------------------
# LensSpec value conversions
# Inputs: 0) value
# Returns: converted value
@@ -9316,6 +9280,7 @@ sub ConvLensSpec($)
return \$val unless length($val) == 8;
my @a = unpack("H2H4H4H2H2H2",$val);
$a[1] += 0; $a[2] += 0; # remove leading zeros from focal lengths
+ s/([a-f])/hex($1)/e foreach @a[3,4]; # convert hex digits (ie. "b0" = f11)
$a[3] /= 10; $a[4] /= 10; # divide f-numbers by 10
return join ' ', @a;
}
@@ -9325,6 +9290,7 @@ sub ConvInvLensSpec($)
my @a=split(" ", $val);
return $val unless @a == 6;
$a[3] *= 10; $a[4] *= 10; # f-numbers are multiplied by 10
+ s/^(\d{2})0$/sprintf('%x0',$1)/e foreach @a[3,4];
$_ = hex foreach @a; # convert from hex
return pack 'CnnCCC', @a;
}
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index 8fabd9e1..c5d3309e 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/lib/Image/ExifTool/TagNames.pod
@@ -293,6 +293,11 @@ The EXIF meta information is organized into different Image File Directories
ExifTool family 1 group names. When writing EXIF information, the default
B<Group> listed below is used unless another group is specified.
+Mandatory tags (indicated by a colon after the B<Writable> type) may be
+added automatically with default values when creating a new IFD, and the IFD
+is removed automatically when deleting tags if only default-valued mandatory
+tags remain.
+
The table below lists all EXIF tags. Also listed are TIFF, DNG, HDP and
other tags which are not part of the EXIF specification, but may co-exist
with EXIF tags in some images. Tags which are part of the EXIF 2.31
@@ -16519,12 +16524,17 @@ specification.
2 ResolutionUnit int8u:
3 XResolution int16u:
5 YResolution int16u:
+ 7 ThumbnailWidth no
+ 8 ThumbnailHeight no
+ 9 ThumbnailTIFF no
=head3 JFIF Extension Tags
Tag ID Tag Name Writable
------ -------- --------
0x0010 ThumbnailImage no
+ 0x0011 ThumbnailTIFF no
+ 0x0013 ThumbnailTIFF no
=head2 FlashPix Tags
diff --git a/lib/Image/ExifTool/Writer.pl b/lib/Image/ExifTool/Writer.pl
index b79f4e4d..c04cc7ed 100644
--- a/lib/Image/ExifTool/Writer.pl
+++ b/lib/Image/ExifTool/Writer.pl
@@ -4279,6 +4279,58 @@ sub NewGUID()
}
#------------------------------------------------------------------------------
+# Make TIFF header for raw data
+# Inputs: 0) width, 1) height, 2) num colour components, 3) bits, 4) resolution
+# 5) color-map data for palette-color image (8 or 16 bit)
+# Returns: TIFF header
+# Notes: Multi-byte data must be little-endian
+sub MakeTiffHeader($$$$;$$)
+{
+ my ($w, $h, $cols, $bits, $res, $cmap) = @_;
+ $res or $res = 72;
+ my $saveOrder = GetByteOrder();
+ SetByteOrder('II');
+ if (not $cmap) {
+ $cmap = '';
+ } elsif (length $cmap == 3 * 2**$bits) {
+ # convert to short
+ $cmap = pack 'v*', map { $_ | ($_<<8) } unpack 'C*', $cmap;
+ } elsif (length $cmap != 6 * 2**$bits) {
+ $cmap = '';
+ }
+ my $cmo = $cmap ? 12 : 0; # offset due to ColorMap IFD entry
+ my $hdr =
+ "\x49\x49\x2a\0\x08\0\0\0\x0e\0" . # 0x00 14 menu entries:
+ "\xfe\x00\x04\0\x01\0\0\0\x00\0\0\0" . # 0x0a SubfileType = 0
+ "\x00\x01\x04\0\x01\0\0\0" . Set32u($w) . # 0x16 ImageWidth
+ "\x01\x01\x04\0\x01\0\0\0" . Set32u($h) . # 0x22 ImageHeight
+ "\x02\x01\x03\0" . Set32u($cols) . # 0x2e BitsPerSample
+ Set32u($cols == 1 ? $bits : 0xb6 + $cmo) .
+ "\x03\x01\x03\0\x01\0\0\0\x01\0\0\0" . # 0x3a Compression = 1
+ "\x06\x01\x03\0\x01\0\0\0" . # 0x46 PhotometricInterpretation
+ Set32u($cmap ? 3 : $cols == 1 ? 1 : 2) .
+ "\x11\x01\x04\0\x01\0\0\0" . # 0x52 StripOffsets
+ Set32u(0xcc + $cmo + length($cmap)) .
+ "\x15\x01\x03\0\x01\0\0\0" . Set32u($cols) . # 0x5e SamplesPerPixel
+ "\x16\x01\x04\0\x01\0\0\0" . Set32u($h) . # 0x6a RowsPerStrip
+ "\x17\x01\x04\0\x01\0\0\0" . # 0x76 StripByteCounts
+ Set32u($w * $h * $cols * int(($bits+7)/8)) .
+ "\x1a\x01\x05\0\x01\0\0\0" . Set32u(0xbc + $cmo) . # 0x82 XResolution
+ "\x1b\x01\x05\0\x01\0\0\0" . Set32u(0xc4 + $cmo) . # 0x8e YResolution
+ "\x1c\x01\x03\0\x01\0\0\0\x01\0\0\0" . # 0x9a PlanarConfiguration = 1
+ "\x28\x01\x03\0\x01\0\0\0\x02\0\0\0" . # 0xa6 ResolutionUnit = 2
+ ($cmap ? # 0xb2 ColorMap [optional]
+ "\x40\x01\x03\0" . Set32u(3 * 2**$bits) . "\xd8\0\0\0" : '') .
+ "\0\0\0\0" . # 0xb2+$cmo (no IFD1)
+ (Set16u($bits) x 3) . # 0xb6+$cmo BitsPerSample value
+ Set32u($res) . "\x01\0\0\0" . # 0xbc+$cmo XResolution = 72
+ Set32u($res) . "\x01\0\0\0" . # 0xc4+$cmo YResolution = 72
+ $cmap; # 0xcc or 0xd8 (cmap and data go here)
+ SetByteOrder($saveOrder);
+ return $hdr;
+}
+
+#------------------------------------------------------------------------------
# Return current time in EXIF format
# Inputs: 0) flag to include timezone (0 to disable, undef or 1 to include)
# Returns: time string