当前位置:首页 > 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');
}

水印位置计算

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

// 居中水印
$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
分享给朋友:

相关文章

vue实现网页水印

vue实现网页水印

添加静态水印 在Vue中可以通过CSS或Canvas实现静态水印。CSS方法适合简单文字水印,Canvas适合复杂水印效果。 <template> <div class="w…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $n…

php 实现购物车

php 实现购物车

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

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query…