[ コード例 ]
<?php
/**
* GD 文字列パネル描画ファイル生成
* argv : 1: 生成ファイル名, 2: 横サイズ 3: 縦サイズ 4: フォント色 5:背景色 6:枠色
* 7: 枠サイズ
* 8: 書込文字列 9: 文字サイズ 10 : 背景透明度 (0 - 127) (8-10 オプション)
*/
// == 引数取得 == //
$fnm = $argv[1];
$xsz = $argv[2];
$ysz = $argv[3];
// 色指定 //
$rgb_font = $argv[4];
$rgb_fill = $argv[5];
$rgb_frame = $argv[6];
// isset($argv[10]) ? $argv[10] : "";
// 枠サイズ //
$frlen = $argv[7];
// 文字 //
$text = isset($argv[8]) ? $argv[8] : "";
$textsz = isset($argv[9]) ? $argv[9] : "";
$alpha = isset($argv[10]) ? $argv[10] : 0;
// Linux 引数の" が認識されてない対策 //
$text = str_replace("_", " ", $text);
// 引数を16進文字列に分解して配列に入れる //
$fontcols = explode(":", $rgb_font);
$fillcols = explode(":", $rgb_fill);
$framecols = explode(":", $rgb_frame);
// +++ 色文字列を数値に変換 +++ //
// ImageColorAllocate用に10進配列にする //
$fontdecs = [];
foreach ($fontcols as $col) {
$fontdecs[] = hexdec($col);
}
$filldecs = [];
foreach ($fillcols as $col) {
$filldecs[] = hexdec($col);
}
$framedecs = [];
foreach ($framecols as $col) {
$framedecs[] = hexdec($col);
}
// 画像の新規生成 //
$img = imagecreate($xsz, $ysz);
# 色を作る #
// 文字 //
$imcol_font = ImageColorAllocate($img, $fontdecs[0], $fontdecs[1], $fontdecs[2]);
// 背景は透明度指定あり //
$imcol_fill = ImageColorAllocateAlpha($img, $filldecs[0], $filldecs[1], $filldecs[2], $alpha);
// 枠 //
$imcol_frame = ImageColorAllocate($img, $framedecs[0], $framedecs[1], $framedecs[2]);
# UTF8へ変換 #
$text = mb_convert_encoding($text, 'UTF-8', 'auto');
// フォント //
if (DIRECTORY_SEPARATOR == "/") {
$font = "/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf";
}
else {
$font = "C:\Windows\Fonts\msgothic.ttc";
}
// 背景を描画する //
/* img, x1, y1, x2, y2, color */
imagefilledrectangle($img, 0, 0, $xsz, $ysz, $imcol_fill);
// 枠線幅 //
imagesetthickness($img, $frlen);
// 文字を書き込む //
/* img, テキストサイズ, アングル, X, Y, color, font, text */
$textx = (int)($frlen) + (int)($textsz / 2);
$texty = (int)($frlen + $textsz) + (int)($textsz / 2);
ImageTTFText($img, $textsz, 0, $textx, $texty, $imcol_font, $font, $text);
// 枠を引く //
/* img, x1, y1, x2, y2, color */
imagerectangle($img, 0, 0, $xsz, $ysz, $imcol_frame);
// ファイルに出力 //
$filepath = pathinfo($fnm);
$ext = mb_strtolower($filepath['extension']);
$res = 1;
try {
if ($ext === "jpg" || $ext === "jpeg") {
imagejpeg($img, $fnm, 100);
}
else if ($ext === "png") {
imagepng($img, $fnm, 9);
}
else if ($ext === "gif") {
imagegif($img, $fnm, 100);
}
}
catch (Exception $ex) {
$res = 0;
}
// 解放 //
imagedestroy($img);
// 連想配列に格納 //
$responce = [];
$responce["Result"] = $res;
// JSONに変換して出力 //
//echo json_encode($responce, JSON_PRETTY_PRINT);
echo json_encode($responce);
?>
[ 生成例 ]
コメントを投稿するにはログインしてください。