HTML,CSS,Javascript,PHPを中心に、WEB制作時に忘れがちなTipsを紹介など。
ブログのアイキャッチ作成がめんどかったもので、投稿タイトルから自動的にアイキャッチ画像を作成するようにしてみた。以下、文字合成の手順を示すが参考までに。
$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行の前提で位置計算を行うようにロジックを書きましたとさ。