当前位置:首页 > PHP

php水印实现

2026-02-14 13:52:43PHP

PHP 图片水印实现方法

使用 GD 库添加文字水印

安装 GD 库后,通过 imagettftext 函数实现文字水印。示例代码:

$image = imagecreatefromjpeg('source.jpg');
$color = imagecolorallocate($image, 255, 255, 255);
$font = 'arial.ttf';
imagettftext($image, 20, 0, 50, 50, $color, $font, 'Watermark Text');
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);

使用 GD 库添加图片水印

通过 imagecopyimagecopymerge 合并水印图片:

$source = imagecreatefromjpeg('source.jpg');
$watermark = imagecreatefrompng('watermark.png');
imagecopymerge(
    $source, $watermark, 
    imagesx($source) - imagesx($watermark) - 10,
    imagesy($source) - imagesy($watermark) - 10,
    0, 0,
    imagesx($watermark), imagesy($watermark),
    50
);
header('Content-Type: image/jpeg');
imagejpeg($source);
imagedestroy($source);
imagedestroy($watermark);

使用 Imagick 扩展

php水印实现

Imagick 提供更强大的图像处理能力:

$image = new Imagick('source.jpg');
$watermark = new Imagick();
$watermark->newImage(200, 100, new ImagickPixel('transparent'));
$draw = new ImagickDraw();
$draw->setFontSize(30);
$draw->annotation(10, 50, 'Watermark');
$watermark->drawImage($draw);
$image->compositeImage($watermark, Imagick::COMPOSITE_OVER, 10, 10);
header('Content-Type: image/jpeg');
echo $image;

水印透明度控制

GD 库通过 imagecopymerge 的最后一个参数(0-100)控制透明度,Imagick 通过 setImageOpacity 方法:

php水印实现

$watermark->setImageOpacity(0.5);

批量处理目录图片

遍历目录并应用水印:

$files = glob('images/*.{jpg,png}', GLOB_BRACE);
foreach ($files as $file) {
    $image = imagecreatefromjpeg($file);
    // 添加水印操作
    imagejpeg($image, 'watermarked/' . basename($file));
    imagedestroy($image);
}

注意事项

  • 确保服务器已安装 GD 或 Imagick 扩展
  • 字体文件路径需正确
  • 处理前检查文件权限
  • 大图片处理需考虑内存限制

以上方法可根据实际需求调整水印位置、大小、透明度等参数。对于生产环境,建议添加错误处理机制并考虑性能优化。

标签: 水印php
分享给朋友:

相关文章

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…