Écrire du texte sur des images PHP équivaut à ajouter des filigranes de texte aux images. Généralement, lors du téléchargement d'images, les filigranes sont généralement des filigranes de texte ou de logo d'image. méthodes.
1. Filigrane de texte
Le filigrane de texte consiste à ajouter du texte à l'image. Il utilise principalement la méthode imagefttext de la bibliothèque gd et nécessite un fichier de police.
$dst_path = 'dst.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); //打上文字 $font = './simsun.ttc';//字体路径 $black = imagecolorallocate($dst, 0x00, 0x00, 0x00);//字体颜色 imagefttext($dst, 13, 0, 20, 20, $black, $font, '快乐编程'); //输出图片 list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); switch ($dst_type) { case 1://GIF header('Content-Type: image/gif'); imagegif($dst); break; case 2://JPG header('Content-Type: image/jpeg'); imagejpeg($dst); break; case 3://PNG header('Content-Type: image/png'); imagepng($dst); break; default: break; } imagedestroy($dst);
Créez une nouvelle image et imprimez le texte en filigrane :
// imagecreatefromstring // imageCreateFromPng Create a new image from file or URL 创建图片对象 // Create a 300x100 image,新创建一张图片 $im = imagecreatetruecolor(500, 300); // set color $red = imagecolorallocate($im, 0xFF, 0x00, 0x00); $black = imagecolorallocate($im, 0x00, 0x00, 0x00); // Make the background red // function imagefilledrectangle ($image, $x1, $y1, $x2, $y2, $color) {} imagefilledrectangle($im, 0, 0, 300, 100, $red); // Path to our ttf font file $font_file = './font/Arial.ttf'; // imagefttext ($image, $size, $angle, $x, $y, $color, $fontfile, $text, $extrainfo = null ) // Draw the text 'PHP Manual' using font size 13 imagefttext($im, 13, 0, 150, 50, $black, $font_file, 'PHP Manual'); // Output image to the browser header('Content-Type: image/png'); imagepng($im); imagedestroy($im); clipboard.png
Le rendu est le suivant :
2. Filigrane d'image
Le filigrane d'image consiste à ajouter une image à une autre image, principalement en utilisant l'imagecopy et l'imagecopymerge de la bibliothèque gd.
$dst_path = 'myimage.jpg'; $src_path = 'http://www.logodashi.com/FileUpLoad/inspiration/636003768803214440.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path)); //获取水印图片的宽高 list($src_w, $src_h) = getimagesize($src_path); //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果 imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, 30); //如果水印图片本身带透明色,则使用imagecopy方法 // imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h); //输出图片 list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); switch ($dst_type) { case 1://GIF header('Content-Type: image/gif'); imagegif($dst); break; case 2://JPG header('Content-Type: image/jpeg'); imagejpeg($dst); break; case 3://PNG header('Content-Type: image/png'); imagepng($dst); break; default: break; } imagedestroy($dst); imagedestroy($src);
Rendu :
3. Autres fonctions liées au traitement d'image
/* *返回图像的大小及图像类型 // Get the size of an image $size = getimagesize("http://image18-c.poco.cn/mypoco/myphoto/20160901/20/17857099520160901203311082.jpg?750x956_120"); print_r($size); // 打印结果 Array ( [0] => 750 [1] => 956 [2] => 2 [3] => width="750" height="956" [bits] => 8 [channels] => 3 [mime] => image/jpeg ) */ /** * imagecopy — 拷贝图像的一部分 */ // bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h ) // 将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。 /* * * http://php.net/manual/zh/function.imagecopymerge.php *imagecopymerge — 拷贝并合并图像的一部分 *bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct ) * * */
Tutoriel recommandé : Tutoriel PHP
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!