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();