# # $Id: HiXIF.pm,v 1.1 2005/11/11 09:53:01 oneroad Exp $ # package Image::ExifTool::HiXIF; use strict; use vars qw($VERSION); use base qw(Image::ExifTool); ($VERSION) = '$Revision: 1.1 $' =~ m/Revision:\s*(\S+)/; sub GetHiXIFInfo { my $self = shift; my $info = $self->GetInfo(); # FocalLength135 if ( defined $$info{'FocalLengthIn35mmFormat'} ) { $$info{'FocalLength135'} = sprintf("%.1fmm",$$info{'FocalLengthIn35mmFormat'}); } elsif ( defined $$info{'FocalLength35efl'} and $$info{'FocalLength35efl'} =~ /.*\(.*:\s(.*mm)\)/ ) { $$info{'FocalLength135'} = $1; } my %CCDSIZE = ( 'FUJIFILM' => { 'FinePix4500' => 36/8.3, }, 'NIKON' => { 'E5000' => 28/7.1, }, 'NIKON CORPORATION' => { 'Mod NIKON D1X' =>36/24, 'NIKON D1X' => 36/24, }, 'SONY' => { 'DSC-F828' => 28/7.1, 'DSC-F88' => 38/6.7, 'DSC-W1' => 38/7.9, 'DSC-P8' => 39/6, 'DSC-P73' => 39/6, 'DSC-P100' => 38/7.9, 'DSC-P150' => 38/7.9, 'DSC-T1' => 38/6.7, 'DSC-T3' => 38/6.7, 'DSC-L1' => 32/5.1, 'DSC-V3' => 34/7, }, 'RICOH' => { 'Caplio G4 wide' => 28/4.2, 'Caplio G4' => 35/5.5, 'Caplio RR211' => 49/9.6, 'Caplio RX' => 28/4.3, 'Caplio GX' => 28/5.8, 'Caplio R1' => 28/4.6, }, 'OLYMPUS CORPORATION' => { 'C8080WZ' => 28/7.1, }, ); if ( defined $$info{'Make'} and defined $$info{'Model'} ) { $$info{'Make'} =~ s/\s+$//; $$info{'Model'} =~ s/\s+$//; if ( $CCDSIZE{$$info{'Make'}}{$$info{'Model'}} ) { (my $length = $$info{'FocalLength'}) =~ s/mm$//; $$info{'FocalLength135'} = sprintf("%.1fmm", $length * $CCDSIZE{$$info{'Make'}}{$$info{'Model'}}); } } return $info; } 1; =head1 NAME Image::ExifTool::HiXIF; =head1 SYNOPSIS use Image::ExifTool::HiXIF; my $image = Image::ExifTool::HiXIF->new(); if ( $image->ExtractInfo($imagepath) ) { my $info = $image->GetHiXIFInfo(); } =cut =head1 DESCRIPTION Image::ExifTool::HiXIF add &GetHiXIFInfo to Image::ExifTool. If Image::ExifTool::GetInfo cannot return focallength135 (35mm film conversion), Image::ExifTool::GetHiXIFInfo may return by CCDSIZE. =cut =head1 Methods =over 4 =item GetHiXIFInfo =cut =head1 COPYRIGHT Copyright 2005- Kawabata, Kazumichi (Higemaru.) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut