[Perl] 画像の形式を判別する (PNG/JPEG/BMP/GIF)

Viewed: 09:22:12 in December 6, 2019

Posted: March 29, 2018
WordPressの記事をアーカイブ化したものです。

この記事を書いた人
「牧岡ふうふ堂」オーナー。博士(工学)。
酒都圏在住。
某地方の国立系工業大学でアシスタントをしていました。 専門は有機反応・金属錯体(主に希土類)・π共役系。
twitterアカウントは@makiokafufudo(お仕事用)、@ymakioka(個人用)です。

判別したい画像のファイル名を指定し、サブルーチン(またはモジュール)”image_format_check(ファイル名)”で呼び出します。

JPEGであればjpg、PNGであればpng、BMPであればbmp、GIFであればgifの値を返します。
判別不能の場合はbinの値を返します。

#----- スクリプト始まり

#!/usr/bin/perl

use CGI qw(:standard);
use strict;

sub image_format_check {

#----- ローカル変数の宣言
my ($checkdata, $checkb, $checkg);
#-----ローカル変数の宣言 ここまで

#----- パラメータ取り込み ここから
my $checkfilepath = shift;
#----- パラメータ取り込み ここまで

#----- データ取り込み ここから
open INcheckformat, “$checkfilepath”;
binmode INcheckformat;
read INcheckformat, $checkb, 2; #2バイト読む (jpeg, gif, png)
seek INcheckformat, 0, 0; #読込位置を先頭に戻す
read INcheckformat, $checkg, 3 ; #3バイト読む (gif)
close INcheckformat;
#----- データ取り込み ここまで

#----- 画像の種類の判定 ここから
$checkdata = ‘bin’;
$checkdata = ‘jpg’ if ($checkb eq “\xff\xd8”);
$checkdata = ‘png’ if ($checkb eq “\x89\x50”);
$checkdata = ‘bmp’ if ($checkb eq “\x42\x4D”);
$checkdata = ‘gif’ if ($checkg eq “\x47\x49\x46”);
#----- 画像の種類の判定 ここまで

return ($checkdata);

}

1;

#----- スクリプト終わり

 

あわせてどうぞ

アーカイブ化したWordPress記事
よく読まれている記事をアーカイブ化しました。

[お猿さん] 国道2号線沿いにある例の看板の意味
広島でちょっと有名なあれです。

イノシシ肉でチャーシューを作りました
中華街で売られているチャーシューの味に近くなると思います。

PerlとJavascriptの連携でウェブコンテンツを表示させる方法
JavascriptとPerlを組み合わせ、アクセスランキングなどをWebに表示させたいときなどに使います。

餅つき機のモーターが止まった(ºωº)
忘れないように書き留めておきました。

Avogadroで分子モデリング
分子の三次元モデルを描くのに、私はAvogadroを使ってます。

H4Oの構造が見つかった(ただしですね
分子ではないですよ。

H4Oの構造が見つかった (2)
分子ではないですよ。

[水素水] H6Oのエネルギー計算をやってみた
むりくりにやりました。

[水素水] H4Oが何色なのか知りたくて計算した。
無理くりTDDFT 。

[水素水] H6Oが何色なのか計算してみた
無理くりTDDFT 。

[水素水] H4Oが何色なのか知りたくて計算した(2)
無理くりTDDFT 。

H3O4なるものを見かけたので軌道を可視化したかった(2)
もはや質量保存の法則なんぞどうでもいいらしい 。