モジュール探し
できるだけ依存が少ないモジュールで作りたいなぁと思って探すとImage::Infoというモジュールがあったので使ってみました。yanchaで質問して、Image::JpegCheckというモジュールがあることを知りましたが、名前の通りjpegだけですので、今回の用途には使えず。
Image::InfoもImage::JpegCheckもやっていることはほぼ同じで、画像の一部だけ読み込んで判定しています。
コード
ファイル名に拡張子がある場合は拡張子を用いて判定しています。拡張子がなければ画像データから判定。
sub media_type {
my $image_path = shift;
require MIME::Types;
my ($type) = MIME::Types::by_suffix($image_path); #画像ファイル名から判定
unless ($type) {
require Image::Info;
my $img_info = Image::Info::image_type($image_path); #画像データの一部から判定
if ( $img_info->{error} ) {
die sprintf("Can't determine file type: %s", $img_info->{error});
}
$type = 'image/'.$img_info->{file_type};
}
lc($type);
}
0 件のコメント:
コメントを投稿