YamasakiMasaki.com
  • ホームHome
  • ヤマサキマサキ / やまCh.YouTube
  • 外部記憶装置Blog
  • 制作支援ツールTools
  • ツイッターTwitter
  • メガネカケル-○○-×○
外部記憶装置
2021.03.05

PHPで画像を文字を合成する方法。

PHP 画像合成
この記事をシェア

ブログのアイキャッチ作成がめんどかったもので、投稿タイトルから自動的にアイキャッチ画像を作成するようにしてみた。以下、文字合成の手順を示すが参考までに。

 

$imageSrc = ImageCreateFromJPEG($path); // 下地になる画像の指定(フルパス)
$fontfile = 'NotoSansJP-Black.otf'; // フォントの指定(フルパス)
$angle = 0; // 文字の角度(未検証)
$color = imagecolorallocate($imageSrc, 0, 0, 0); //文字の色
$size = 50; // 文字のサイズ(ピクセル)
$x = 100; // 左からの座標(ピクセル)
$y = 100; // 上からの座標(ピクセル)

// 文字列挿入
imagettftext(
    $imageSrc,     // 挿入先の画像
    $size,      // フォントサイズ
    $angle,     // 文字の角度
    $x,         // 挿入位置 x 座標
    $y,         // 挿入位置 y 座標
    $color,     // 文字の色
    $fontfile,  // フォントファイル
    $title // 挿入文字列
);

ImageJPEG($imageSrc, $path, 70); // 画像を保存

 

描画領域とかも決め打ちなら位置指定やサイズ指定も事前に決まるので、画像と文字を合成するだけなら割と簡単なんだけども。。。

 

文字数や行数が変化する場合はゴニョゴニョと挿入位置を計算しないとだめですね。
フォント毎に行間のサイズなんかも違ったりするので、一律に自動挿入するには色々と仕組みがいりそう。

 

このブログのアイキャッチでは単純に1行あたりの文字数を決めて最大4行の前提で位置計算を行うようにロジックを書きましたとさ。

この記事をシェア
【highlight.js】コード掲載を読みやすく。コードハイライトの導入。
一覧に戻る
「pathinfo」関数の使い方
ヤマサキマサキ
1985年・大阪生まれ大阪育ち。IT業界で主にWEBシステムだったりWEBサイトだったりを作って生きてます。お問い合わせなどはTwitterにてお願いします。
ヤマサキマサキ / やまch. @_Ya_Masaki_ SUZURI 「メガネカケル」
© YamasakiMasaki