ホームページ  >  記事  >  バックエンド開発  >  PHP 画像処理 (中) - テキストの描画

PHP 画像処理 (中) - テキストの描画

齐天大圣
齐天大圣オリジナル
2020-05-03 10:58:07143ブラウズ

通常のテキストを描画します

関数: imagestring()

imagestring ( resource $image , int $font, int $x, int $y, string $s, int $col) : bool

imagestring() Col color を使用して、image で表される画像の x、y 座標に文字列 s を描画します (これは、画像の左上隅の座標です)文字列、画像全体(画像の左上隅は 0,0)。フォントが 1、2、3、4、または 5 の場合は、内蔵フォントが使用されます。

imagestring を使用してフォントを描画するのは非常に簡単です。ただし、フォント サイズが 1 から 5 までしかなく、中国語がサポートされていないという欠点もあります。

<?php
/**绘制文字**/
$imgHandler = imagecreatetruecolor(100,100);
// 绘制矩形并填充
$borderCol = imagecolorallocate($imgHandler, 23, 32, 200);
imagefilledrectangle($imgHandler, 0, 0, 99, 99, $borderCol);
// 绘制水平方向文字
$strColor = imagecolorallocate($imgHandler, mt_rand(0,100), mt_rand(0, 100), mt_rand(0, 100));
imagestring($imgHandler, 5,1, 45, &#39;hello world&#39;, $strColor);
// 垂直方向文字
imagestringUp($imgHandler, 5,45, 99, &#39;hello world&#39;, $strColor);
header("Content-Type:image/png");
imagepng($imgHandler);
imagedestroy($imgHandler);

フォントライブラリを使用してテキストを描画します

imagestringを使用してテキストを描画します。非常に簡単です。しかし、いくつかの欠陥があります。まず第一に、中国語は描画できません。また、イメージストリングを使用して描画されるテキストはあまり大きくなりません。

ここでは、imagettftext を使用してテキストを描画します。フォント サイズの設定に加えて、imagettftext はフォントの傾き角度も設定できます。

使用する前に、ttf 形式のフォントをいくつか見つける必要があります。 Windows システムの C:WindowsFonts ディレクトリには多くのフォントがあります。

<?php
/* 使用imagettftext向图像正中写文字 */

$im = imagecreatetruecolor(300, 300);
$bgColor = imagecolorallocate($im, 222,222,222);
imagefill($im,0, 0, $bgColor);
$size = 30;
$angle = 0;
$font = &#39;D:\wwwroot\stdphp\img\font/msyhbd.ttf&#39;;
$text = &#39;大圣到此一游&#39;;

//获取文字信息
$info = imagettfbbox($size, $angle, $font, $text);
$minx = min($info[0], $info[2], $info[4], $info[6]);
$maxx = max($info[0], $info[2], $info[4], $info[6]);
$miny = min($info[1], $info[3], $info[5], $info[7]);
$maxy = max($info[1], $info[3], $info[5], $info[7]);

///* 计算文字初始坐标和尺寸 */
$x = $minx;
$y = abs($miny);
$w = $maxx - $minx;
$h = $maxy - $miny;

/* 随机文字颜色 */
$textColor = imagecolorallocate($im, mt_rand(0,150), mt_rand(0,150), mt_rand(0,150));
imagettftext($im, $size, $angle, (300 - $w) / 2 + $x, (300 - $h) / 2 + $y, $textColor, $font, $text);
header("Content-type:image/png");
imagepng($im);
imagedestroy($im);

が描いた絵の効果は以下の通りです:

PHP 画像処理 (中) - テキストの描画

以上がPHP 画像処理 (中) - テキストの描画の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。