Maison >développement back-end >tutoriel php >Traitement d'image PHP (moyen) - dessin de texte
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, 'hello world', $strColor); // 垂直方向文字 imagestringUp($imgHandler, 5,45, 99, 'hello world', $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 = 'D:\wwwroot\stdphp\img\font/msyhbd.ttf'; $text = '大圣到此一游'; //获取文字信息 $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 :
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!