トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

Diary/2009-7-3

 画像形式の変更

手持ちのbmp形式画像の容量がでかいのでpngに変換しようと思った。数枚程度ならペイント系のアプリで行うのだが,ちょっと枚数が多くて,Perl->イメージマジックで行うことにした。そう頻繁に行う作業ではなく汎用性は持たせないこととした。画像変換処理については,つい先日もやったとこなので一部流用することで簡単にまとめる。

#!/usr/bin/perl

use DirHandle;
use Image::Magick; 
my ($w,$h,$w0,$h0,$f,$f1,$f2,$img);

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>bmp2png</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
$path = './img';
$dir = new DirHandle $path;
while ($f = lc $dir->read){
	if ( $f =~ m/(.*)\.bmp$/ ) {
		$f1 = $1 .".png";
		$f2 = $1 .".jpg";
		$img=Image::Magick->new();
		$img->Read("$path\/$f");
		$img->Write("$path\/$f1");
#		($w,$h)=$img->Get('width','height'); ($w0, $h0) = ($w,$h);
#		if ($w>100){	($w0, $h0) = (100, int(($h * 100)/$w));	}
#		if ($h0>100){	($w0, $h0) = (int(($w * 100)/$h), 100);	}
#		$img->Resize(width => $w0 ,height => $h0);
#		$img->Write("$path\/$f2");
		unlink("$path\/$f");
		print "$f($w,$h)  =>  $f1($w0, $h0)<br/>\n";
	}
}
$dir->close;
print "</BODY>\n";
print "</HTML>\n";

スクリプトの置かれた下に'./img'フォルダーを作りそこに対象とするBMP画像を入れる。起動させるとPNG画像に変換した後に削除する。中ほどにある,'#'で始まる行のコメントアウトは縮小版を作るときのメモとしての意味だけ。ディスクトップで画像縮小を行うときは,「チビすな!!(http://homepage3.nifty.com/metis/)」を利用させてもらっているから。まぁ数が多くなると時間はかかるが,これで容量はグッと減る。

投稿者
サマリ
カテゴリ
優先度
状態
内容

Today: 1 / Yesterday: 0