MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(失敗)
敬老の日。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;
- カテゴリ:215プラグイン関係
トラックバック(0)
このブログ記事を参照しているブログ一覧: MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(失敗)
このブログ記事に対するトラックバックURL:
- Categories
- Entries
-
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.5)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.4)
- memo:perlでプラグイン Image::ExifとImage::Info
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.3)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.2)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(GPS Ready)
- MT4:エントリのURLをQRコードで自動生成する
- MT4.2:QRコード画像を生成するプラグイン(改)
- 嵌りメモ(perlのxampp環境でのファイル吐き出し実験)
- MT4.2:QRコード画像を生成するプラグイン
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(失敗)
- 管理画面を拡張する(メニューとメソッド追加)
- MT4.1:追加したファンクションタグのみへモデファイア追加
- MT4.1:エントリの既存DBへアクセスしてデータ取得
- MT4.1:MTの計算機能を拡張するプラグイン(CalcExp)開発の話
- MT4.1:MTの計算機能を拡張するプラグイン(CalcExp)配布
- MT4.1:営業日(休日)をイッパツで表現するカレンダープラグイン(改)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(プラグイン設定編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(ブログ毎編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(カテゴリ編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(エントリ編)
- MT4.1:カテゴリの並べ替え(オリジナルプラグイン+ハッシュ変数)
- サンプルプラグインを手入力した(AddField)
- MT4.1:営業日(休日)をイッパツで表現するカレンダープラグイン
- サンプルプラグインを手入力した(RandomEntry)
- 最小単位のプラグインを生成するサンプル(ファンクション、ブロック、モデファイア、コールバック)
コメントする