This article mainly introduces PHP to create watermarks, which has certain reference value. Now I share it with everyone. Friends in need can refer to it
1. Add text watermarks using the imagefttext function
<?php/** * 为图片添加文字水印 * @param string $dst_path 原图路径 * @param string $font_path 字体存放路径 * @param string $string_font 欲添加的文字 */function textwatermark($dst_path,$font_path,$string_font){ //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); //添加文字 $black = imagecolorallocate($dst, 0x00, 0x00, 0x00); imagefilledrectangle($dst, 0, 0, 79, 49, 0x0000FF); imagefilledrectangle($dst, 9, 9, 70, 40, 0xFFFFFF); imagefttext($dst, 13, 0, 20, 20, $black, $font_path, $string_font); //输出图片 list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); switch ($dst_type) { case 1://IMAGETYPE_GIF header('Content-Type: image/gif'); imagegif($dst); break; case 2://IMAGETYPE_JPEG header('Content-Type: image/jpeg'); imagejpeg($dst); break; case 3://IMAGETYPE_PNG header('Content-Type: image/png'); imagepng($dst); break; default: break; } imagedestroy($dst); } header('charset=utf-8');$dst_path = './uploads/1.jpg';//选择的字体需支持中文 arial.ttf不支持中文$font_path = 'C:/Windows/Fonts/simhei.ttf'; //当文件编码为utf-8时 不需转换 $string_font = '剑liang'; textwatermark($dst_path,$font_path,$string_font);?>
2. Use imagecopymerge function for image watermark
<?php/** * 添加图片水印功能 * @param resource $dst_path 原图路径 * @param resource $src_path 水印图片路径 * @param int $pact 水印合并效果,默认为50 * @param int $postion 添加水印位置,默认为右下角 */function watermark($dst_path,$src_path, $pct = 50,$postion = 5){ //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path)); // 从数组中获取原图和水印图片的宽和高 list($dst_w, $dst_h) = getimagesize($dst_path); list($src_w, $src_h) = getimagesize($src_path); switch ($postion) { case 1: // 左上 $src_x = $src_y = 0; break; case 2: // 右上 $src_x = $dst_w - $src_w; $src_y = 0; break; case 3: // 中间 $src_x = ($dst_w - $src_w) / 2; $src_y = ($dst_h - $src_h) / 2; break; case 4: // 左下 $src_x = 0; $src_y = $dst_h - $src_h; break; case 5: // 右下 $src_x = $dst_w - $src_w; $src_y = $dst_h - $src_h; break; default: break; } //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果 imagecopymerge($dst, $src, $src_x, $src_y, 0, 0, $src_w, $src_h, $pct); //如果水印图片本身带透明色,则使用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://IMAGETYPE_GIF header('Content-Type: image/gif'); imagegif($dst); break; case 2://IMAGETYPE_JPEG header('Content-Type: image/jpeg'); imagejpeg($dst); break; case 3://IMAGETYPE_PNG header('Content-Type: image/png'); imagepng($dst); break; default: break; } imagedestroy($dst); imagedestroy($src); }$source = './uploads/1.jpg';$water = './uploads/6.jpg'; watermark($source, $water, 50, 5);?>
Related recommendations:
Detailed steps of creating session method in PHP
PHP creation or How to export Excel data table
How to create a transparent PNG image in PHP
The above is the detailed content of Create watermark with PHP. For more information, please follow other related articles on the PHP Chinese website!