Under the Bridge

a Picture of the Late Him

MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(失敗)

2008年9月15日 15:01 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

敬老の日。MT4.21で、JPEGファイルのEXIF情報を取得するプラグインを作ろうと思ったが、のっけから躓いた。

実は以前MT4.1で同じところまでやって、XAMPP環境のメンテナンス中に誤ってファイルが消失した。今日ふとやり直そうと思い、いちおう覚え書きとしてここにも書いておく。

EXIF情報とは

以下。

1994年に富士フィルムが提唱したデジタルカメラ用の画像ファイルの規格。JEIDAによって標準化され、各社のデジタルカメラに採用されている。最新版はExif 2.2(Exif Print)。TIFF形式で画像についての情報や撮影日時などの付加情報を記録できるほか、縮小画像(サムネイル)を記録することができる。画像形式はRGB無圧縮方式やJPEG方式など複数の形式をサポートしている。

これを作ってなんに使うのか?

JPEGファイルには、詳細な情報がある。カメラのメーカー、モデル名、はてはGPS情報(注:GPS対応機種のみ)まで。これらを画像より取得することで、MT側よりなんの情報も入力することなく、詳しい情報を併記することが出来るか?と考えた。

フォトログでカメラ名とかシャッタースピードとか撮影日時(秒単位で取得できる)とか出てたらなんか楽しいかな?と思って。それと、確かGoogleMapって緯度経度を扱えるんで、EXIF情報より求めたGPS情報より緯度経度(標高もあったな)など絡めると面白いかと...ちなみにわたしの携帯電話は、GPS対応カメラがついている。

こんな情報が取れるようだ(※以下はIViewのexif.dllで取得したもの)。

  • ImageDescription -
  • Make - NIKON
  • Model - COOLPIX S5
  • Orientation - Right top
  • XResolution - 300
  • YResolution - 300
  • ResolutionUnit - Inch
  • Software - COOLPIX S5V1.1
  • DateTime - 2007:08:19 13:22:03
  • YCbCrPositioning - Co-Sited
  • ExifOffset - 284
  • ExposureTime - 1/22.5 seconds
  • FNumber - 3.00
  • ExposureProgram - Normal program
  • ISOSpeedRatings - 400
  • ExifVersion - 0220
  • DateTimeOriginal - 2007:08:19 13:22:03
  • DateTimeDigitized - 2007:08:19 13:22:03
  • ComponentsConfiguration - YCbCr
  • CompressedBitsPerPixel - 2 (bits/pixel)
  • ExposureBiasValue - 0.00
  • MaxApertureValue - F 3.03
  • MeteringMode - Multi-segment
  • LightSource - Auto
  • Flash - Flash not fired, compulsory flash mode
  • FocalLength - 5.80 mm
  • UserComment -
  • FlashPixVersion - 0100
  • ColorSpace - sRGB
  • ExifImageWidth - 1024
  • ExifImageHeight - 768
  • InteroperabilityOffset - 1026
  • FileSource - DSC - Digital still camera
  • SceneType - A directly photographed image
  • CustomRendered - Normal process
  • ExposureMode - Auto
  • White Balance - Auto
  • DigitalZoomRatio - 0.00 x
  • FocalLengthIn35mmFilm - 35 mm
  • SceneCaptureType - Standard
  • GainControl - Low gain up
  • Contrast - Normal
  • Saturation - Normal
  • Sharpness - Normal
  • SubjectDistanceRange - Unknown
  • Maker Note (Vendor): -
  • Data version - 2 (512)
  • ISO Setting - 400
  • Color Mode - COLOR
  • Image Quality - NORMAL
  • White Balance - AUTO
  • Image Sharpening - AUTO
  • Focus Mode - AF-S
  • Flash Setting -
  • Unknown - 5.64
  • ISO Selection - MANUAL
  • Thumbnail IFD offset - 2172
  • Image Adjustment - NORMAL
  • Auxiliary Lens - OFF
  • Manual Focus Distance - 0.00/0.00
  • Digital Zoom - 1.00 x
  • AF Focus Position - Center
  • Scene Mode -
  • Saturation Adjustment - 0
  • Noise Reduction - OFF
  • Thumbnail: -
  • Compression - 6 (JPG)
  • XResolution - 300
  • YResolution - 300
  • ResolutionUnit - Inch
  • JpegIFOffset - 4596
  • JpegIFByteCount - 3782

テストコード

Image::ExifToolモジュールを使用する。

http://search.cpan.org/~exiftool/Image-ExifTool-7.30/lib/Image/ExifTool.pod

以下は最小構成のテストコード。テストのために各キー名を列挙するようなコードを書いたが、うまく動作しない。原因は調査中。(2008/09/15 追記:色々いじってたら、環境を壊してしまったようだ。)

package MT::Plugin::GetEXIF;
use strict;
use MT::Plugin;
use base qw(MT::Plugin);
our $VERSION = '0.1';
use Image::ExifTool;

my $plugin = new MT::Plugin::GetEXIF({
    id => 'GetEXIF',
    key => 'get_exif',
    name => 'GetEXIF',
    version => $VERSION,
    description => 'GetEXIF',
    author_name => 'apstar',
    author_link => 'http://www.mtde.info/',
});
MT->add_plugin($plugin);

sub init_registry
{
    my $plugin = shift;
    $plugin->registry({
        tags => {
            function => {
                'GetEXIF' => \&_hdlr_getexif,
            },
        },
    });
    
}

sub _hdlr_getexif {
my ($ctx, $args) = @_;
my $filepath = $args->{filepath};
my $exif_tool = new Image::ExifTool;
my $exif_info = $exif_tool->ImageInfo($filepath);
my @amema = keys (%$exif_info);
my $out = "@amema"; 
}

1;

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(失敗)

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)