JavaScriptを有効にしてください

【PHP】画像に文字を追加する

 ·  ☕ 2 分で読めます

【PHP】画像に文字を追加する

PHPで画像に文字を追加します。

環境

  • PHP8.1

前準備

GDライブラリは標準で入っていないので環境によっては面倒かとは思います。

コード

 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だよ!');

これで画像が生成されます。

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer