GD

GDグラフィックライブラリインタフェース

使いそうなもののみピックアップしてあるので、他のメソッドについてはCPANを参照の事。

use GD;
パッケージをロードする。

my $image = GD::Image->new($width,$height,$truecolor);
インスタンスを生成する。$truecolorのデフォルトは0(8bitパレットカラー)。1を設定すると
24bitカラーになる。

== ファイル・データの読込 ==
my $image = GD::Image->newFromPng($file [,$truecolor]);
my $image = GD::Image->newFromPngData($data [,$truecolor]);
my $image = GD::Image->newFromJpeg($file [,$truecolor]);
my $image = GD::Image->newFromJpegData($data [,$truecolor]);
my $image = GD::Image->newFromGif($file [,$truecolor]);
my $image = GD::Image->newFromGifData($data [,$truecolor]);

== データ出力 ==
これらのデータをファイルに出力するときは、ハンドルをbinmodeに設定すること。

my $pngdata = $image->png([$compression_level]);
$compression_level:-1,0~9。0は圧縮なし。-1は自動選択。デフォルトは-1。

my $jpegdata = $image->jpeg([$quality]);
$quality:0~100。デフォルトは自動選択。

my $gifdata = $image->gif();

== カラーパレット ==

my $index = $image->colorAllocate($red,$green,$blue);
カラーパレットの割当て

my $index = $image->colorAllocateAlpha($red,$green,$blue,$alpha);
透明度チャネル付きカラーパレットの割当て
$alpha:0(不透明)~127(透明)

my $index = $image->getPixel($x,$y);
座標($x,$y)のパレットインデクス値を返す。

my ($red,$green,$blue) = $image->rgb($index);
パレットインデクスに対応するRGB値を返す。

$image->transparent($colorindex);
$colorindexを透過色に設定する。パラメタなしで呼び出すと、現在の透過色に設定されているパレットインデクス値を返す。

== 描画 ==

$image->fill($x,$y,$color);
塗りつぶし

== コピー ==

$image->copy($sourceimage,$dstX,$dstY,$srcX,$srcY,$width,$height);
$sourceimageを部分コピーする。コピー元とコピー先は同一のオブジェクトでもよいが、領域のオーバーラップは不可。

my $newimage = $image->clone();
全体をコピーしたインスタンスを返す。

$image->copyMerge($sourceimage,$dstX,$dstY,$srcX,$srcY,$width,$height,$percent);
$sourceimageを部分マージする。マージは、色混合によって行われ、$parcentで混合比率(0~100)を指定する。混合比率が高いほど$sourceimageが強調され、混合比率100はcopyメソッドと同じ結果になる。

$image->copyMergeGray($sourceimage,$dstX,$dstY,$srcX,$srcY,$width,$height,$percent);
$sourceimageをグレーイメージに変換後に部分マージする。それ以外はcopyMergeメソッドと同じ。

$image->copyResized($sourceimage,$dstX,$dstY,$srcX,$srcY,$dstW,$dstH,$srcW,$srcH);
$sourceimageをリサイズして部分コピーする。

$image->copyResampled($sourceimage,$dstX,$dstY,$srcX,$srcY,$dstW,$dstH,$srcW,$srcH);
$sourceimageをリサイズして部分コピーする。リサイズ時に、スムージングが行われる。コピー先はtrue colorでなければならない(パレットカラーの時は、copyResizedと同じ動作になる)。

$image->copyRotated($sourceimage,$dstX,$dstY,$srcX,$srcY,$width,$height,$angle);
$sourceimageを回転して部分コピーする。$angleは、時計回りに度数で指定する。$dsyXと$dstYはコピー先の中心を指定する(左上ではない!)。

$image->trueColorToPalette([$dither], [$colors]);
true colorイメージをパレットカラーイメージに変換する。
$dither:0 or 1、ディザリング指定。デフォルトは0。
$color:~256、最大色数。デフォルトはgdMaxColors(256)。

== 変換 ==

my $image = $sourceImage->copyRotate90();
my $image = $sourceImage->copyRotate180();
my $image = $sourceImage->copyRotate270();
my $image = $sourceImage->copyFlipHorizontal();
my $image = $sourceImage->copyFlipVertical();
$image->rotate180();
$image->flipHorizontal();
$image->flipVertical();

== 文字描画 ==

my $font = GD::Font->load($fontfilepath);
フォントファイルを読み込む。

$image->string($font,$x,$y,$string,$color);
文字列を描画する。

$image->stringUp($font,$x,$y,$string,$color);
反時計回り90°回転した文字列を描画する。

$image->char($font,$x,$y,$char,$color);
文字を描画する。

$image->charUp($font,$x,$y,$char,$color);
反時計回り90°回転した文字を描画する。

== その他 ==

my ($width,$height) = $image->getBounds();
my $width = $image->width;
my $height = $image->height;
my $is_truecolor = $image->isTrueColor();