PHPで画像を処理する場合、画像にテキストを描画する必要があることが多く、テキストの位置と色を正確に制御することが望まれます。この記事では、ImageFontWidth()とImageColorAllocate()を組み合わせたImageFontWidth()を使用して、色のテキストを出力し、テキスト幅を動的に計算する効果を実現する方法に焦点を当て、画像処理中により正確なレイアウトを実現できるようにします。
ImageFontWidth(int $ font):int
この関数は、指定された内蔵フォントの文字幅をピクセルで返します。 PHP内蔵フォント番号の範囲は1〜5で、異なるフォントサイズは幅が異なります。
ImageColorAllocate(Resource $ image、int $ red、int $ green、int $ blue):int
画像リソースに色を割り当てると、色の値は3つのパラメーターRGBで指定されています。後続の図面に使用される色の識別子を返します。
テキストを描画するときは、通常、テキストが占めている幅を知る必要があります。 ImageString()関数によって描画されるフォント幅が固定されているため、各文字の幅はImageFontWidth()で取得し、文字列の長さを掛けてテキスト全体の幅を取得できます。
PHPで画像を生成し、画像に異なる色のテキストを描画し、テキストの幅を動的に計算してテキストセンタリングを実現する方法を示す簡単な例を示します。
<?php
// キャンバスを作成します,幅300,高い100,背景は白です
$width = 300;
$height = 100;
$image = imagecreatetruecolor($width, $height);
// 白い背景
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// フォントサイズを選択します,範囲 1-5
$font = 5;
// 获取文本和计算幅度
$text = "Hello, カラフルなテキスト!";
$font_width = imagefontwidth($font);
$text_width = strlen($text) * $font_width;
// 色を割り当てます - 赤
$red = imagecolorallocate($image, 255, 0, 0);
// キャンバス上のテキストの開始を計算しますx座標,センターディスプレイ
$x = ($width - $text_width) / 2;
$y = ($height - imagefontheight($font)) / 2;
// 出力テキスト
imagestring($image, $font, $x, $y, $text, $red);
// 出力画像
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
ImageFontWidth($ font)で各文字の幅を取得します。
文字列長strlen($テキスト)を掛けて、テキストの総幅を取得します。
キャンバス幅を使用してテキストの幅を差し引き、それを2で除算して、水平センターを実現します。
ImageColorAllocate()を使用して、必要な色を割り当てます。ここに赤い例があります。
Imagestring()を介して指定された座標にテキストを描画します。
異なる色のテキストの複数のセグメントを描画する必要がある場合は、最初に各セグメントのテキスト幅を計算して順番に描画できます。
ImageFonTheight()関数を使用して、垂直センターを実現できます。
複雑なテキストの場合、TrueTypeフォントと組み合わせてImagetTftext()を使用することをお勧めしますが、幅を計算するにはImagetTfbbox()が必要です。
この方法により、PHP画像処理でテキストの幅を動的に計算し、色のテキストを描画する機能を簡単に実現できます。これにより、テキストで写真を生成するときに正確なレイアウトが容易になります。