PHP给图片添加文字或图片水印的实现代码

有时上传图片时,图片添加需要给图片添加水印,文字水印一般为文字或图片logo水印,或图下面就来看看两种添加方法。片水

一、实现文字水印

文字水印就是代码在图片上加上文字,主要使用gd库的图片添加imagefttext方法,并且需要字体文件。文字效果图如下:

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

新创建一张图片,然后打印文字水印:

// imagecreatefromstring // imageCreateFromPng  Create a new image from file or URL   创建图片对象 // Create a 300x100 image,b2b供应网片水新创建一张图片 $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); 

二、图片水印

图片水印就是代码将一张图片加在另外一张图片上,主要使用gd库的图片添加imagecopy和imagecopymerge。

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

效果图:

三、服务器租用其他有关图像处理的函数

/*  *返回图像的大小及图像类型 // 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 )  *  *  */  
滇ICP备2023000592号-31