【PHP】画像に文字を重ねて合成する方法

PHPにはimagefttext()という元画像、フォント、テキスト等を指定して新しい画像を生成する関数があるのでこれを使用します。

コード


$base_image    = 'sample.png'; // 元画像のパス
$new_image     = imagecreatefrompng($base_image); // 元画像から新しい画像の生成
$font_size     = 50; // フォントサイズ
$angle         = 0; // 角度
$x             = 88; // X座標
$y             = 88 + $font_size; // Y座標
$font_color    = imagecolorallocate($new_image, 41, 45, 61); // 文字色。第二引数以降にRGBで指定。
$font_file     = 'sample.ttf'; // TrueTypeフォントファイルのパス
$text          = 'サンプルテキスト'; // 重ねる文字
$line_height   = 1.5; // 行間


/* 上記データを元に画像とテキストを合成 */
imagefttext(
	$new_image,
	$font_size,
	$angle,
	$x,
	$y,
	$font_color,
	$font_file,
	$text,
	['linespacing' => $line_height]
);

/* 画像の保存 */
$upload_dir    = '/sampledir/'; // 保存ディレクトリ
$new_file_name = 'new_sample.png' // 保存する画像名
imagepng( $new_image, $upload_dir.$new_file_name );

/* メモリ上から画像を破棄 */
imagedestroy($new_image);

当ブログではOG画像の生成に利用しています。

参考