Maison >développement back-end >tutoriel php >Traitement d'image PHP (moyen) - dessin de texte

Traitement d'image PHP (moyen) - dessin de texte

齐天大圣
齐天大圣original
2020-05-03 10:58:07163parcourir

Dessiner du texte ordinaire

Fonction : imagestring()

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

imagestring() Utilisez la couleur col pour dessiner la chaîne s vers le x de l'image représentée par image , coordonnée y (c'est la coordonnée du coin supérieur gauche de la chaîne, le coin supérieur gauche de l'image entière est 0, 0). Si la police est 1, 2, 3, 4 ou 5, la police intégrée est utilisée.

Utiliser une chaîne d'images pour dessiner des polices est très simple. Mais les défauts sont également très évidents. La taille de la police n'est que de 1 à 5 et les caractères chinois ne sont pas pris en charge.

<?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);

Utilisez la bibliothèque de polices pour dessiner du texte

Utilisez une chaîne d'images pour dessiner du texte, c'est très simple. Mais il y a plusieurs défauts. Tout d'abord : il ne peut pas dessiner le chinois. De plus, le texte dessiné à l'aide d'une chaîne d'images ne sera pas trop volumineux.

Ici, nous utilisons imagettftext pour dessiner du texte. En plus de définir la taille de la police, imagettftext peut également définir l'angle d'inclinaison de la police.

Avant utilisation, nous devons trouver quelques polices au format ttf. Il existe de nombreuses polices dans le répertoire C:WindowsFonts sous le système Windows. L'effet de l'image dessinée par

<?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);

est le suivant :

Traitement dimage PHP (moyen) - dessin de texte

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn