Maison  >  Article  >  développement back-end  >  Comment écrire du texte dans des images php

Comment écrire du texte dans des images php

藏色散人
藏色散人original
2019-09-28 09:12:495074parcourir

Comment écrire du texte dans des images php

É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 :

Comment écrire du texte dans des images php

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 :

Comment écrire du texte dans des images php

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!

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