当前位置:首页 > PHP

php水印实现

2026-02-28 13:04:39PHP

添加文字水印

使用 imagettftext 函数在图片上添加文字水印。需要确保服务器安装了 GD 库和 FreeType 支持。

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

添加图片水印

通过 imagecopyimagecopymerge 函数将水印图片叠加到原图上。

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

调整水印透明度

使用 imagecopymerge 函数可以控制水印的透明度,最后一个参数是透明度百分比(0-100)。

imagecopymerge(
    $source,
    $watermark,
    imagesx($source) - $sx - $margin_right,
    imagesy($source) - $sy - $margin_bottom,
    0,
    0,
    $sx,
    $sy,
    50  // 50%透明度
);

批量处理多张图片

遍历目录中的图片文件,为每张图片添加水印。

$directory = 'images/';
$files = scandir($directory);
foreach ($files as $file) {
    if (in_array(pathinfo($file, PATHINFO_EXTENSION), ['jpg', 'png'])) {
        $sourcePath = $directory . $file;
        $outputPath = $directory . 'watermarked_' . $file;
        $source = imagecreatefromjpeg($sourcePath);
        // 添加水印代码...
        imagejpeg($source, $outputPath);
        imagedestroy($source);
    }
}

检查 GD 库支持

在实现水印功能前,需要确认服务器支持 GD 库。

if (!extension_loaded('gd') || !function_exists('gd_info')) {
    die('GD library is not installed');
}

水印位置计算

根据需求动态计算水印位置,例如居中或平铺。

php水印实现

// 居中水印
$positionX = (imagesx($source) - $sx) / 2;
$positionY = (imagesy($source) - $sy) / 2;

// 平铺水印
for ($x = 0; $x < imagesx($source); $x += $sx + $margin) {
    for ($y = 0; $y < imagesy($source); $y += $sy + $margin) {
        imagecopymerge($source, $watermark, $x, $y, 0, 0, $sx, $sy, 30);
    }
}

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

相关文章

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…