Image-ExifTool

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN


Nov. 2, 2014 - Version 9.75

  - Added support for FLIR version 101 metadata
  - Added a new Olympus LensType (thanks Niels Kristian Bech Jensen)
  - Added a new Pentax LensType (thanks Louis Granboulan)
  - Added a new Samsung LensType
  - Decode a few more Nikon D4S tags (thanks Warren Hatch)
  - Decode a few more Sony tags (thanks Jos Roost)
  - Decode a new FujiFilm tag
  - Improved formula for calculating Sony:FocusDistance2 (thanks Jos Roost)
  - Changed XMP parsing to impose standard namespace prefixes, thus avoiding
    (some) problems reading the ugly XMP generated by Microsoft products
  - Fixed decoding of Nikon FileInfo tags for recent DSLR models

Oct. 15, 2014 - Version 9.74

  - Added a number of new QuickTime GenreID values (thanks Francois Bonzon)
  - Added support for some newer Sony cameras (thanks Jos Roost)
  - Decode more Nikon D4S custom settings (thanks Warren Hatch)
  - Improved lens identification logic for XMP metadata (thanks Jos Roost)

html/ancient_history.html  view on Meta::CPAN


<a name='v9.75'><b>Nov. 2, 2014 - Version 9.75</b></a>
<ul>
<li>Added support for FLIR version 101 metadata
<li>Added a new Olympus LensType (thanks Niels Kristian Bech Jensen)
<li>Added a new Pentax LensType (thanks Louis Granboulan)
<li>Added a new Samsung LensType
<li>Decode a few more Nikon D4S tags (thanks Warren Hatch)
<li>Decode a few more Sony tags (thanks Jos Roost)
<li>Decode a new FujiFilm tag
<li>Improved formula for calculating Sony:FocusDistance2 (thanks Jos Roost)
<li>Changed XMP parsing to impose standard namespace prefixes, thus avoiding
    (some) problems reading the ugly XMP generated by Microsoft products
<li>Fixed decoding of Nikon FileInfo tags for recent DSLR models
</ul>

<a name='v9.74'><b>Oct. 15, 2014 - Version 9.74</b></a>
<ul>
<li>Added a number of new QuickTime GenreID values (thanks Fran&ccedil;ois Bonzon)
<li>Added support for some newer Sony cameras (thanks Jos Roost)
<li>Decode more Nikon D4S custom settings (thanks Warren Hatch)

lib/Image/ExifTool.pm  view on Meta::CPAN

    MPEG => 'video/mpeg',
    MRC  => 'image/x-mrc',
    MRW  => 'image/x-minolta-mrw',
    MXF  => 'application/mxf',
    NEF  => 'image/x-nikon-nef',
    NKSC => 'application/x-nikon-nxstudio',
    NRW  => 'image/x-nikon-nrw',
    NUMBERS => 'application/x-iwork-numbers-sffnumbers',
    ODB  => 'application/vnd.oasis.opendocument.database',
    ODC  => 'application/vnd.oasis.opendocument.chart',
    ODF  => 'application/vnd.oasis.opendocument.formula',
    ODG  => 'application/vnd.oasis.opendocument.graphics',
    ODI  => 'application/vnd.oasis.opendocument.image',
    ODP  => 'application/vnd.oasis.opendocument.presentation',
    ODS  => 'application/vnd.oasis.opendocument.spreadsheet',
    ODT  => 'application/vnd.oasis.opendocument.text',
    OGG  => 'audio/ogg',
    OGV  => 'video/ogg',
    ONP  => 'application/on1',
    ORF  => 'image/x-olympus-orf',
    OTF  => 'application/font-otf',

lib/Image/ExifTool/Minolta.pm  view on Meta::CPAN

        PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
    },
    0x49ba => {
        Name => 'ISO',
        ValueConv => '2 ** (($val-48)/8) * 100',
        ValueConvInv => '48 + 8*log($val/100)/log(2)',
        PrintConv => 'int($val + 0.5)',
        PrintConvInv => '$val',
    },
    0x49bb => { # (https://exiftool.org/forum/index.php/topic,3688.0.html)
        # if this value is the 35mm equivalent magnification, then the formula could
        # be (1.5 * 2**($val/16-5)+1) * FocalLength, but this tends to underestimate
        # distance by about 18% (ref 20) (255=inf)
        Name => 'FocusDistance',
        ValueConv => '2**(($val-126)/16)',
        ValueConvInv => 'log($val)/log(2)*16+126',
        PrintConv => '$val > 266 ? "inf" : sprintf("%.2f m", $val)',
        PrintConvInv => '$val=~s/ ?m//; $val=~/inf/i ? 267 : $val',
    },
    0x49bd => {
        Name => 'LensType',

lib/Image/ExifTool/Minolta.pm  view on Meta::CPAN

        ValueConv => '($val-106)/8',
        ValueConvInv => '$val * 8 + 106',
    },
    0x49c5 => {
        Name => 'MaxAperture',
        ValueConv => '2 ** (($val-8)/16)',
        ValueConvInv => '8 + 16*log($val)/log(2)',
        PrintConv => 'sprintf("%.1f",$val)',
        PrintConvInv => '$val',
    },
    # 0x49c6 - gives focal length using same formula as 0x49bb
    0x49c7 => {
        Name => 'FNumber',
        ValueConv => '2 ** (($val-8)/16)',
        ValueConvInv => '8 + 16*log($val)/log(2)',
        PrintConv => 'sprintf("%.1f",$val)',
        PrintConvInv => '$val',
    },
    0x49dc => {
        Name => 'InternalSerialNumber',
        Format => 'string[12]',

lib/Image/ExifTool/PhaseOne.pm  view on Meta::CPAN

        ValueConvInv => 'GetUnixTime($val)',
        PrintConv => '$self->ConvertDateTime($val)',
        PrintConvInv => '$self->InverseDateTime($val)',
    },
    0x0113 => 'ImageNumber', # (NC)
    0x0203 => { Name => 'Software', Format => 'string' },
    0x0204 => { Name => 'System',   Format => 'string' },
    # 0x020b - int32u: 0,1
    # 0x020c - int32u: 1,2
    # 0x020e - int32u: 1,3
    0x0210 => { # (NC) (used in linearization formula - ref 1)
        Name => 'SensorTemperature',
        Format => 'float',
        PrintConv => 'sprintf("%.2f C",$val)',
        PrintConvInv => '$val=~s/ ?C//; $val',
    },
    0x0211 => { # (NC)
        Name => 'SensorTemperature2',
        Format => 'float',
        PrintConv => 'sprintf("%.2f C",$val)',
        PrintConvInv => '$val=~s/ ?C//; $val',

lib/Image/ExifTool/Sony.pm  view on Meta::CPAN

        },
        Notes => 'distance in metres = FocusPosition * FocalLength / 1000',
        ValueConv => '$val >= 128 ? "inf" : $val * $val[1] / 1000',
        PrintConv => '$val eq "inf" ? $val : "$val m"',
    },
    FocusDistance2 => {
        # For DSLR-A550 and newer, NEX/ILCE/SLT/ILCA (only A65V/A77V are missing ...):
        #     seen FocusPosition2 with values from 80 - 255 (and 21 for Touit 12mm...)
        # Formula from minolta.pm (WBInfoA100 - 0x49bb) gives mostly correct/acceptable distance indications.
            # (https://exiftool.org/forum/index.php/topic,3688.0.html)
            # if this value is the 35mm equivalent magnification, then the formula could
            # be (1.5 * 2**($val/16-5)+1) * FocalLength, but this tends to underestimate
            # distance by about 18% (ref 20) (255=inf)
            # modified 16-10-2014 based on A99V measurements: use FocalLengthIn35mmFormat and leave out the "1.5*" factor.
        Require => {
            0 => 'Sony:FocusPosition2',
            1 => 'FocalLengthIn35mmFormat',
        },
        # (NOTE: This calculation may be wrong. "Focus Distance 2 is the result of an erroneous
        #  user supplied formula to exiftool. It does use data embedded in the raw file,
        #  but it is not the data. The actual embedded data seems to be proportional to
        #  magnification not a focus distance. The camera needs to calculate magnification
        #  for translation stabilization.", ref https://www.fredmiranda.com/forum/topic/1858744/0)
        ValueConv => q{
            return undef unless $val;
            return 'inf' if $val >= 255;
            return (2**($val/16-5) + 1) * $val[1] / 1000;
        },
        PrintConv => '$val eq "inf" ? $val : sprintf("%.4g m", $val)',
    },

lib/Image/ExifTool/Sony.pm  view on Meta::CPAN

    substr($$dataPt, $start, $words*4) = pack('N*', @data);
}

#------------------------------------------------------------------------------
# Decipher/encipher Sony tag 0x2010, 0x900b, 0x9050 and 0x940x data (ref PH)
# Inputs: 0) data reference, 1) true to encipher the data
sub Decipher($;$)
{
    my ($dataPt, $encipher) = @_;
    # This is a simple substitution cipher, so use a hardcoded translation table for speed.
    # The formula is: $c = ($b*$b*$b) % 249, where $c is the enciphered data byte
    # (note that bytes with values 249-255 are not translated, and 0-1, 82-84,
    #  165-167 and 248 have the same enciphered value)
    if ($encipher) {    # encipher
        $$dataPt =~ tr/\x02-\xf7/\x08\x1b\x40\x7d\xd8\x5e\x0e\xe7\x04V\xea\xcd\x05\x8ap\xb6i\x88\x200\xbe\xd7\x81\xbb\x92\x0c\x28\xecl\xa0\x95Q\xd3\x2f\x5dj\x5c9\x07\xc5\x87L\x1a\xf0\xe2\xef\x24y\x02\xb7\xac\xe0\x60\x2bG\xba\x91\xcbu\x8e\x233\xc4\xe3...
    } else {            # decipher
        $$dataPt =~ tr/\x08\x1b\x40\x7d\xd8\x5e\x0e\xe7\x04V\xea\xcd\x05\x8ap\xb6i\x88\x200\xbe\xd7\x81\xbb\x92\x0c\x28\xecl\xa0\x95Q\xd3\x2f\x5dj\x5c9\x07\xc5\x87L\x1a\xf0\xe2\xef\x24y\x02\xb7\xac\xe0\x60\x2bG\xba\x91\xcbu\x8e\x233\xc4\xe3\x96\xdc\x...
    }
}

#------------------------------------------------------------------------------

lib/Image/ExifTool/ZIP.pm  view on Meta::CPAN

use Image::ExifTool qw(:DataAccess :Utils);

$VERSION = '1.32';

sub WarnProc($) { $warnString = $_[0]; }

# file types for recognized Open Document "mimetype" values
my %openDocType = (
    'application/vnd.oasis.opendocument.database'     => 'ODB', #5
    'application/vnd.oasis.opendocument.chart'        => 'ODC', #5
    'application/vnd.oasis.opendocument.formula'      => 'ODF', #5
    'application/vnd.oasis.opendocument.graphics'     => 'ODG', #5
    'application/vnd.oasis.opendocument.image'        => 'ODI', #5
    'application/vnd.oasis.opendocument.presentation' => 'ODP',
    'application/vnd.oasis.opendocument.spreadsheet'  => 'ODS',
    'application/vnd.oasis.opendocument.text'         => 'ODT',
    'application/vnd.adobe.indesign-idml-package'     => 'IDML', #6 (not open doc)
    'application/epub+zip' => 'EPUB', #PH (not open doc)
);

# iWork file types based on names of files found in the zip archive



( run in 0.278 second using v1.01-cache-2.11-cpan-26ccb49234f )