Image::Magick で画像をグレースケールに変換する方法


Perl モジュール Image::Magick を使って CGI プログラムでアップロードした画像をグレースケールに変換する方法のご紹介です。

これはシリーズ記事「Image::Magick の使い方」の 3/8 番目です。 目次を表示

画像をグレースケールに変換

Image::Magickの使い方サンプルコード元画像

元画像

Image::Magickで変換したグレースケール画像

グレースケール画像

Image::Magick サンプルコード:画像をグレースケールに変換

my $grayscale;
eval{
$grayscale = $img->Clone();
$ret = $grayscale->Quantize(colorspace => ‘gray’);
};
if ($ret||$@) {
print “グレースケールへの変換に失敗しました。: $ret $@\n”;
exit;
}
$saved{grayscale} = “$dir/grayscale$ext”;
eval{$ret = $grayscale->Write($saved{grayscale})};
if ($ret||$@){
print “グレースケール画像の保存に失敗しました。: $ret $@\n”;
exit;
}

画像をグレースケールに変換する時は Quantize メソッドで colorspace を変換します。

一旦変換すると色が全て落ちますので、その後再度カラーで処理したい場合は、もう一度逆に「->Quantize(colorspace => ‘RGB’)」で戻しておくと、白黒画像の上に色付きの文字を書く等の処理ができます。