1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| <?php
class Image
{
// フォント
const FONT = __DIR__ . '/KintoSans-Medium.ttf';
/**
* 画像に文字列を追加する
*
* @param string $templatePath 文字を追加する画像のファイルパス
* @param string $outputPath 画像の出力先
* @param string $text 画像に追加文字列
* @return void
*/
static function create(string $templatePath, string $outputPath, string $text): void
{
// 画像を読み込んで生成
// imagecreatefromXXXは取り扱う画像毎に違うので注意
$image = imagecreatefrompng($templatePath);
// 文字の色を生成
$color = imagecolorallocate($image, 0, 0, 0);
// 文字のサイズ(px
$size = 36;
// 文字の角度
$angle = 0;
// 文字位置設定
// 左からの座標(px
$x = 20;
// 上からの座標(px
$y = 220 + $size;
// 文字列挿入
imagettftext(
$image, // 挿入先の画像
$size, // フォントサイズ
$angle, // 文字の角度
$x, // 位置 x 座標
$y, // 位置 y 座標
$color, // 文字の色
self::FONT, // フォントファイル
implode(PHP_EOL, mb_str_split($text, 25))
);
$dirName = dirname($output);
if(!file_exists($dirName)){
// 指定されたディレクトリがなければを生成
mkdir(dirname($output), '0777', true);
}
// ファイル名を指定して画像出力
imagepng($image, $output);
}
}
Image::create('template.png', 'sample.png', 'Sampleだよ!');
|