GD::Simple(画像描画)
#!/usr/bin/perl
use strict;
use warnings;
use v5.10;
use GD::Simple;
# 画像サイズ
use Readonly;
Readonly my $WIDTH => 100;
Readonly my $HEIGHT => 100;
# GD::Simple オブジェクト作成(キャンバス)
my $img_obj = GD::Simple->new( $WIDTH, $HEIGHT );
・四角(赤、枠線が青)
$img_obj->bgcolor( 'tomato' ); # 色(色名で指定)
$img_obj->fgcolor( 'blue' ); # 枠線の色
$img_obj->rectangle( 10, 10, $WIDTH - 10, $HEIGHT - 10 ); # 始点 x, y 終点 x, y
・四角(透明、枠線が緑)
$img_obj->bgcolor( undef ); # 色
$img_obj->fgcolor( 'green' ); # 枠線の色
$img_obj->rectangle( 20, 20, $WIDTH - 20, $HEIGHT - 20 ); # 始点 x, y 終点 x, y
・線(青)
$img_obj->fgcolor( 'blue' ); # 色
$img_obj->penSize( 10, 10 ); # 線の太さ
$img_obj->moveTo( 20, 20 ); # 始点 x, y
$img_obj->lineTo( $WIDTH - 20, $HEIGHT - 20 ); # 終点 x, y
・円(オレンジ、枠線が緑)
$img_obj->bgcolor( 'orange' ); # 色
$img_obj->fgcolor( 'green' ); # 枠線の色
$img_obj->moveTo( $WIDTH / 2, $HEIGHT / 2 ); # 中心 x, y
$img_obj->ellipse( 75, 75 ); # 幅、高さ
・文字列
$img_obj->fgcolor( 'black' ); # 文字色
$img_obj->font( 'arial' ); # フォント
$img_obj->fontsize( 10 ); # フォントサイズ
$img_obj->moveTo( 1, $HEIGHT / 2 ); # 始点 x, y
$img_obj->string( 'There is no data.' ); # 文字列(最後に記述)
・文字列(日本語)
Readonly my $TTF => '/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf';
$img_obj->fgcolor( 'black' ); # 文字色
$img_obj->font( $TTF ); # フォント
$img_obj->fontsize( 15 ); # フォントサイズ
$img_obj->moveTo( 10, $HEIGHT / 2 + 10 ); # 始点 x, y
$img_obj->string( '風林火山' ); # 文字列(最後に記述)
・文字列(背景黒、文字黄色)
Readonly my $TTF => '/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf';
$img_obj->bgcolor( 'black' ); # 背景色
$img_obj->fgcolor( undef ); # 枠線の色
$img_obj->rectangle( 0, 0, $WIDTH, $HEIGHT ); # 始点 x, y 終点 x, y
$img_obj->fgcolor( 'yellow' ); # 文字色
$img_obj->font( $TTF ); # フォント
$img_obj->fontsize( 15 ); # フォントサイズ
$img_obj->moveTo( 10, $HEIGHT / 2 + 10 ); # 始点 x, y
$img_obj->string( '風林火山' ); # 文字列(最後に記述)
# ファイルへ出力
use Carp qw( croak );
use Fcntl;
use IO::Handle;
my $tmpfn = "tmp.$$"; # テンポラリファイル名
my $imgfn = 'image.png'; # 画像ファイル名
sysopen ( my $fh, $tmpfn, O_WRONLY | O_TRUNC | O_CREAT, 0644 ) or croak qq{can't open :$!};
flock $fh, 2;
print {$fh} $img_obj->png() or croak qq{can't write :$!};
# ファイルファンドルへの出力をバッファしない
$fh->flush or croak qq{can't flush :$!};
# メモリ上にあるファイルの内容をストレージデバイス上のものと同期させる
$fh->sync or croak qq{can't fsync :$!};
close $fh or croak qq{can't close :$!};
# ファイル名変更
rename $tmpfn, $imgfn or croak qq{can't rename $tmpfn to $imgfn :$!};