次のエントリ: LWPでリクエストヘッダ付 Web アクセス(proxy込) [perl]
GDで画像編集
2007-07-25-1 / カテゴリ: [perl] / [permlink]
BMP形式はGDで操作できないので、予めpngあたりに変換しておく。
○ トリミングする
1. 元ファイルを開く
2. あて先pngデータを作成する
3. 元ファイルから座標指定であて先pngへコピーする(トリム処理)
4. あて先pngを書き出す
○ リサイズ
1. 元ファイルを開く
2. あて先pngを作成する
3. 元ファイルから座標&サイズ指定であて先pngへコピー
4. あて先pngを書き出す
組み合わせれば、「画像の上半分はそのまま・下半分のみ高さ1/2にリサイズ」みたいな処理もコマンド1発。
GD.pm (perldoc)
○ トリミングする
1. 元ファイルを開く
2. あて先pngデータを作成する
3. 元ファイルから座標指定であて先pngへコピーする(トリム処理)
4. あて先pngを書き出す
// 元ファイルを開く my $src = GD::Image->new($srcfilename); // あて先pngを作成 my $dst = GD::Image->new($newWidth, $newHeight); // 座標指定であて先pngへコピー $dst->copy($src, 0, 0, $srcX, $srcY, $width, $height); open W, "> $dstfile" or die "cannot open $dstfile: $!\n"; binmode W; print W $dst->png(); close W;copy()メソッドは
copy(元データのGDオブジェクト, あて先開始X座標, あて先開始Y座標, コピー元開始X座標, コピー元開始Y座標, コピーする幅, コピーする高さ)座標は、画像の左上が(0,0)、右下が(width, height)
○ リサイズ
1. 元ファイルを開く
2. あて先pngを作成する
3. 元ファイルから座標&サイズ指定であて先pngへコピー
4. あて先pngを書き出す
// 元ファイルを開く my $src = GD::Image->new($srcfile); // 元ファイルの幅/高さの取得 my ($width, $height) = $src->getBounds(); // あて先pngの作成 my $dst = GD::Image->new($newWidth, $newHeight); // リサイズ $dst->copyResized($src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); // 書き出し open W, "> $dstfile" or die "cannot open $dstfile: $!\n"; binmode W; print W $dst->png(); close W;copyResized()メソッドは
copyResized(元データのGDオブジェクト, あて先開始X座標, あて先開始Y座標, コピー元開始X座標, コピー元開始Y座標, コピー先の幅, コピー先の高さ, コピー元の幅, コピー元の高さ)
組み合わせれば、「画像の上半分はそのまま・下半分のみ高さ1/2にリサイズ」みたいな処理もコマンド1発。
GD.pm (perldoc)
次のエントリ: LWPでリクエストヘッダ付 Web アクセス(proxy込) [perl]
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2013-05-02 16:12