« 画像形式を変換する (ベリー簡単!) | メイン | 画像サイズを変更する [その2] (サムネイル・拡大縮小) »

カテゴリー:ImageMagick 

画像サイズを変更する [その1] (サムネイル・拡大縮小)

このエントリーを含むはてなブックマーク  livedoorクリップ  画像サイズを変更する [その1] (サムネイル・拡大縮小)をdel.icio.usに追加  画像サイズを変更する [その1] (サムネイル・拡大縮小)をYahoo!ブックマークに追加  画像サイズを変更する [その1] (サムネイル・拡大縮小)をニフティクリップに追加

サムネイルを作成するなど、画像を縮小・拡大したい。
縮小率(拡大率)などが決まっている場合、例えば一律50%に縮小するといったことは、非常にかんたんに行える。

次の例では、読み込んだ画像の縦、横のピクセル数を取得し、50%のサイズにリサイズを行い、保存するというプログラムである。

;#
;#半分のサイズにする
;#

use Image::Magick;

#-- オブジェクト作成 --#
my $image = Image::Magick->new;

#-- 画像を読込む --#
$image->Read('./image.jpg');

#-- 現在の縦・横を取得 --#
my ($now_width, $now_height) = $image->Get('width', 'height');

#-- 縮小/拡大 --#
$image->Resize(
          width  => int($now_width  * 0.5)  #100% -> 50%
        , height => int($now_height * 0.5)  #100% -> 50%
        , blur   => 0.8
);

#-- 画像を保存する(JPEG) --#
$image->Write('./image_s.jpg');

読み込んだ画像を、Resizeメソッドのwidthとheightで指定した大きさに変更することが出来る。blurはピントのような物で、1未満ならくっきりとシャープに、1を超える値ならぼかしたような感じになる。縮小する際には若干シャープにしておくとキレイになる。


ここでは現在の縦横のサイズから計算した値を用いているが、もちろん固定値(定数)も利用できる。次の例ではどんなサイズの画像を読み込んでも、横300ピクセル、縦250ピクセルになる。

$image->Resize(
          width  => 300
        , height => 250
        , blur   => 0.8
);

※固定値を用いる場合、画像の縦横比を考慮しないと画像によっては大きく崩れる点に注意。


ちなみに、拡大したい場合には少数(0.5)をかけている部分を変更する。つまり整数値(1.0~)をかけてやれば良い。「1.2」をかければ20%拡大した画像となる。(ここらへんは算数ですね(^^;)


画像の縦横比を考慮し、特定のサイズに収まるようにするためのコードは次のページにまとめることにする。




トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/580

この一覧は、次のエントリーを参照しています: 画像サイズを変更する [その1] (サムネイル・拡大縮小):

» 画像サイズを変更する [その2] (サムネイル・拡大縮小) from CGI・Perl例文集
サムネイルを作成するなど、画像を縮小・拡大したい。 画像の縦横比を考慮し、特定の... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

VPSレンタルサーバー




クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.