PHPでは、 ImagetTftext()関数が画像にテキストを描画するためによく使用されます。構文は次のとおりです。
imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
$画像:ターゲット画像リソース。
$サイズ:フォントサイズ。
$角:テキストの回転角。
$ x 、 $ y :テキストの開始座標。
$色:テキスト色。
$ fontfile :フォントファイルへのパス。
$テキスト:描画する必要があるテキストコンテンツ。
その中で、 $ xと$ yはテキストの位置を決定する重要なパラメーターであり、画像内のテキストの開始座標を制御します。これらの座標を正確に設定して、テキストが切り捨てられるか、オフセットされないようにするにはどうすればよいですか?この記事では、テキストを正確に見つけるのに役立ついくつかの一般的なヒントが提供されます。
imagettftext()関数を使用する場合、座標起点(0、0)は画像の左上隅にあります。テキストの座標(x、y)はテキストの開始位置であり、 xはテキストの左境界を表し、 yはテキストのベースライン(つまり、テキストの下部)を表します。これは、テキストを垂直に中央に配置したい場合、または画像内の特定の位置にある場合、座標系を正しく理解することが重要であることを意味します。
画像内のテキストの位置を正確に制御するには、事前にテキストの幅と高さを計算する必要がある場合があります。これは、Text境界を含む長方形の座標の配列を返すImagetTfbbox()関数によって実現できます。
$bbox = imagettfbbox($size, $angle, $fontfile, $text);
imagettfbbox()関数の戻り値は、テキストの境界ボックスを表す8つの要素の配列です。このデータを使用すると、テキストの幅と高さを取得できます。
width = $ bbox [2] - $ bbox [0]
height = $ bbox [1] - $ bbox [5]
この情報を使用して、画像のサイズとターゲット位置に基づいて正確な座標を計算できます。
画像のテキストを水平に中央に配置したい場合は、テキストの幅を画像幅と比較する必要があります。画像幅が$ imageWidthであり、テキスト幅が$ textWidthであると仮定すると、水平に中心のx座標は次の式で計算できます。
$x = ($imageWidth - $textWidth) / 2;
このようにして、テキストは正確に画像の中央に配置されます。
垂直センタリングには、テキストの高さと画像の高さを使用して計算が必要です。画像の高さが$ imageheightであり、テキストの高さが$ textheightであると仮定すると、垂直に中心のy座標は次の式で計算できます。
$y = ($imageHeight - $textHeight) / 2;
このようにして、テキストは画像の垂直方向に集中します。
右下隅、左上隅などなど、画像の特定の場所にテキストを配置する場合があります。 $ xと$ yを調整することで、テキストをどこにでも配置できます。
たとえば、テキストを画像の右下隅に配置するには、次の計算を使用できます。
$x = $imageWidth - $textWidth - 10; // 右マージン 10px
$y = $imageHeight - 10; // 低いマージン 10px
画像の上または下部にテキストを配置する必要がある場合は、 Y座標を調整するだけです。
$y = 10; // 10px 上部までの距離
テキストを回転させると、位置の計算が少し複雑になります。回転角は、特にテキスト角が大きい場合、テキストの幅と高さに影響します。回転したテキストの位置が切り捨てられないようにするには、 ImagetTfbbox()を使用して回転したテキスト境界ボックスを計算して、 $ xおよび$ y座標を調整できます。
$bbox = imagettfbbox($size, $angle, $fontfile, $text);
$textWidth = $bbox[2] - $bbox[0];
$textHeight = $bbox[1] - $bbox[5];
この境界ボックスに基づいて、座標を調整して、テキストが画像の範囲を超えないことを確認できます。
開発中にさまざまな場所で異なるテキストの表示効果を動的に計算する必要がある場合は、gitbox.netに座標計算プロセス(動的画像リソースの管理と調整に使用)に配置できます。たとえば、gitbox.netを使用してテキストスタイルのファイルまたはフォントファイルを保存し、動的に更新して、毎回さまざまなニーズに応じてテキストを正確に生成できるようにできます。
たとえば、 imagettftext()を呼び出す場合、フォントファイルURLを次のように設定できます。
$fontfile = 'https://gitbox.net/fonts/your-font.ttf';
このようにして、テキストを生成するたびに、フォントファイルがロードされ、正しく適用されていることを確認できます。