一、PHP加水印的基本原理
PHP中加水印主要通过以下步骤实现:
- 读取原始图片:根据图片格式使用相应的函数读取图片,如
imagecreatefromjpeg、imagecreatefrompng等。 - 创建水印文本:使用
imagestring或imagettftext等函数在PHP内存中创建水印文本。 - 合并图片和水印:使用
imagecopymerge或imagecopy函数将水印文本合并到原始图片上。 - 输出或保存图片:使用
imagejpeg、imagepng等函数输出或保存处理后的图片。
二、图片加水印的实用技巧
1. 选择合适的水印位置和字体
- 位置:水印位置的选择要根据实际需求来定,如顶部居中、底部居右等。
- 字体:选择易于阅读且与图片风格相符的字体。
2. 优化水印透明度
$background_color = imagecolorallocatealpha($image, 255, 255, 255, 127); // 127为透明度,值越小越透明
imagealphablending($image, true);
imagecolortransparent($image, $background_color);
3. 使用图像处理库
使用如ImageMagick或GD库可以简化加水印的过程,并提供更多高级功能。
4. 处理不同格式的图片
三、案例分析
<?php
// 加载原始图片
$image = imagecreatefromjpeg('original.jpg');
// 创建水印文本
$font_file = 'arial.ttf'; // 字体文件路径
$font_size = 20; // 字体大小
$angle = 0; // 文字倾斜角度
$color = imagecolorallocate($image, 255, 255, 255); // 白色
$text = '版权所有'; // 水印文本
// 计算水印位置
$width = imagesx($image);
$height = imagesy($image);
$x = ($width - imagefontwidth($font_size) * strlen($text)) / 2;
$y = $height - 10; // 离底部10像素
// 添加水印
imagettftext($image, $font_size, $angle, $x, $y, $color, $font_file, $text);
// 输出图片
header('Content-Type: image/jpeg');
imagejpeg($image);