[Perlメモ]ImageMagickで画像サイズ変更はてなブックマーク数

| コメント(0) | トラックバック(1)

ウェブアプリ等で画像を扱う大抵の場合ImageMagickかGDを使うことになるかとおもいます。

ImageMagickで用途が多いと思われる画像サイズの変更を行う方法をメモしておきます。

検索しても割と出てきにくいので困った方もいるかと思います。(幅だけ指定のはよく出てくるけど、縦横指定でアスペクト比固定の方法がみつからないんですよね)

とりあえずサブルーチンとして書くとこんな感じかなと思います。

&ReSave(“inp.jpg”,”outp.jpg”,800,600);

みたいにコールして使います。

#
# usage &ReSave(input file,output file,max image width,max image height);
#

sub ReSave{
    use Image::Magick;

    my($fname)    = $_[0];                    #入力ファイルパス
    my($out)    = $_[1];                    #出力ファイルパス
    my($maxwidth)    = $_[2];                #縮小実行トリガサイズ
    my($maxheight)    = $_[3];                #縮小実行トリガサイズ

    my($i) = Image::Magick->new;            #Image Magick用オブジェクト生成

    $i->Read($fname);

    #縦横比を保ってサイズの変更
    $i = $i->Transform(geometry=>"$maxwidth x $maxheight");

    $i->Set(quality=>90);                    #圧縮率変更!やってみてます。
    $i->Write("$out");                    #イメージを指定フォーマットで書き出し

    undef $i;                                # オブジェクト破棄
}

 

ミソの部分は

$i = $i->Transform(geometry=>"$maxwidth x $maxheight");

ですね。これで縦横比(アスペクト比)を保ったまま、指定した幅と高さ内で画像を拡大や縮小する事ができます。

下の様に書くと幅だけを指定して幅のピクセルを基準に縦横比を保ったまま画像のサイズを変更できます。

$i = $i->Transform(geometry=>"$maxwidth x");

 

下の場合は高さだけを指定した場合で高さを基準に縦横比を保ったまま画像のサイズを変更できます。

$i = $i->Transform(geometry=>"x $maxheight");

 

後は、画質を90で書きだしています。書きだすときにWriteにちょっと書きたすだけで別の画像形式で書き出せたりするのがImageMagickのいいところですね。


ImageMagick逆引きコマンドリファレンス
amazon 楽天

最近は書籍があっていいですね。

トラックバック(1)

ここだよ

トラックバックスパム対策の為この記事にトラックバックを行うにはトラックバック元の記事中にこのページのURL「http://blog.kumacchi.com/2009/11/perlimagemagick.html」を含めてください。

ありがちですが,2ch のスレッドに画像を補完するスクリプトを作ってみました. 出力はこんな感じ. http://acapulco.dyndns.org/... 続きを読む

コメントする

RSS

rss

ウェブページ

よく読まれている記事

アクセスランキング

 

QRコード

KUMA TYPE QRコード

マイページ

yays

このブログ記事について

このページは、くまっちが2009年11月 1日 04:53に書いたブログ記事です。

ひとつ前のブログ記事は「[perlメモ]変数と文字の区切り」です。

次のブログ記事は「[MySQLメモ]オートインクリメントするカラムの値をINSERT直後に取り出すには」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

  • seo
track feed KUMA TYPE フィードメーター - KUMA TYPE あわせて読みたい