当前位置:首页 > 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 扩展

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 方法:

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

注意事项

php水印实现

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

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

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

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php实现域名

php实现域名

PHP实现域名操作的方法 获取当前域名 使用$_SERVER['HTTP_HOST']可以获取当前访问的域名: $currentDomain = $_SERVER['HTTP_HOST']; ech…

php实现注册登陆

php实现注册登陆

PHP 注册功能实现 创建数据库表结构(MySQL示例): CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php实现抽奖程序

php实现抽奖程序

PHP实现抽奖程序 基本抽奖逻辑 创建一个简单的抽奖程序需要定义奖品、中奖概率及随机选择逻辑。以下是一个基础实现示例: <?php // 奖品配置(奖品名称 => 概率) $prizes…