在PHP中实现图片水印功能,可以使用GD库或Imagick扩展
方法一:使用GD库
function add_watermark($source, $destination, $watermark) {
// 获取图片尺寸
list($sourceWidth, $sourceHeight) = getimagesize($source);
// 创建图像资源
switch ($sourceWidth) {
case 150:
$sourceResource = imagecreatefromjpeg($source);
break;
case 200:
$sourceResource = imagecreatefrompng($source);
break;
default:
return false;
}
// 创建水印资源
$watermarkResource = imagecreatefrompng($watermark);
// 获取水印尺寸
list($watermarkWidth, $watermarkHeight) = getimagesize($watermark);
// 计算水印位置
$destX = $sourceWidth - $watermarkWidth;
$destY = $sourceHeight - $watermarkHeight;
// 将水印合并到目标图片上
imagecopy($sourceResource, $watermarkResource, $destX, $destY, 0, 0, $watermarkWidth, $watermarkHeight);
// 保存图片
switch ($sourceWidth) {
case 150:
imagejpeg($sourceResource, $destination);
break;
case 200:
imagepng($sourceResource, $destination);
break;
}
// 销毁图像资源
imagedestroy($sourceResource);
imagedestroy($watermarkResource);
}
// 使用示例
$source = 'path/to/your/image.jpg';
$destination = 'path/to/your/watermarked_image.jpg';
$watermark = 'path/to/your/watermark.png';
add_watermark($source, $destination, $watermark);
方法二:使用Imagick扩展
function add_watermark($source, $destination, $watermark) {
// 创建Imagick对象
$sourceImage = new Imagick($source);
$watermarkImage = new Imagick($watermark);
// 获取图片尺寸
$sourceWidth = $sourceImage->getImageWidth();
$sourceHeight = $sourceImage->getImageHeight();
// 获取水印尺寸
$watermarkWidth = $watermarkImage->getImageWidth();
$watermarkHeight = $watermarkImage->getImageHeight();
// 计算水印位置
$destX = $sourceWidth - $watermarkWidth;
$destY = $sourceHeight - $watermarkHeight;
// 将水印合并到目标图片上
$sourceImage->compositeImage($watermarkImage, $destX, $destY);
// 保存图片
$sourceImage->writeImage($destination);
$sourceImage->clear();
$sourceImage->destroy();
}
// 使用示例
$source = 'path/to/your/image.jpg';
$destination = 'path/to/your/watermarked_image.jpg';
$watermark = 'path/to/your/watermark.png';
add_watermark($source, $destination, $watermark);
这两种方法都可以实现图片水印功能,你可以根据自己的需求选择使用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。