トップ 一覧 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/)」を利用させてもらっているから。
まぁ数が多くなると時間はかかるが,これで容量はグッと減る。