当前位置:首页 > PHP

php水印实现

2026-01-29 15:49:38PHP

PHP 添加图片水印的方法

使用 imagecopyimagecopymerge 函数在图片上叠加水印图片

$sourceImage = imagecreatefromjpeg('original.jpg');
$watermark = imagecreatefrompng('watermark.png');

$sourceWidth = imagesx($sourceImage);
$sourceHeight = imagesy($sourceImage);
$watermarkWidth = imagesx($watermark);
$watermarkHeight = imagesy($watermark);

$positionX = $sourceWidth - $watermarkWidth - 10;
$positionY = $sourceHeight - $watermarkHeight - 10;

imagecopy(
    $sourceImage,
    $watermark,
    $positionX,
    $positionY,
    0,
    0,
    $watermarkWidth,
    $watermarkHeight
);

header('Content-Type: image/jpeg');
imagejpeg($sourceImage);
imagedestroy($sourceImage);

PHP 添加文字水印的方法

使用 imagettftext 函数在图片上添加文字水印

php水印实现

$image = imagecreatefromjpeg('original.jpg');
$textColor = imagecolorallocate($image, 255, 255, 255);
$fontPath = 'arial.ttf';

imagettftext(
    $image,
    20, // 字体大小
    0,  // 角度
    30, // X位置
    50, // Y位置
    $textColor,
    $fontPath,
    'Watermark Text'
);

header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);

透明水印实现方法

调整水印透明度使用 imagecopymerge 函数

php水印实现

$sourceImage = imagecreatefromjpeg('original.jpg');
$watermark = imagecreatefrompng('watermark.png');

imagecopymerge(
    $sourceImage,
    $watermark,
    10,
    10,
    0,
    0,
    imagesx($watermark),
    imagesy($watermark),
    50 // 透明度 (0-100)
);

imagejpeg($sourceImage, 'watermarked.jpg');
imagedestroy($sourceImage);

批量添加水印的方法

遍历目录为多张图片添加水印

$directory = 'images/';
$files = glob($directory.'*.{jpg,jpeg,png}', GLOB_BRACE);

foreach ($files as $file) {
    $image = imagecreatefromjpeg($file);
    $watermark = imagecreatefrompng('watermark.png');

    imagecopy(
        $image,
        $watermark,
        imagesx($image) - imagesx($watermark) - 10,
        imagesy($image) - imagesy($watermark) - 10,
        0,
        0,
        imagesx($watermark),
        imagesy($watermark)
    );

    imagejpeg($image, 'watermarked_'.basename($file));
    imagedestroy($image);
}

水印位置计算方法

动态计算水印位置公式

// 居中水印
$positionX = (imagesx($sourceImage) - imagesx($watermark)) / 2;
$positionY = (imagesy($sourceImage) - imagesy($watermark)) / 2;

// 九宫格位置计算
$positions = [
    'top-left' => [10, 10],
    'top-center' => [(imagesx($sourceImage) - imagesx($watermark)) / 2, 10],
    'top-right' => [imagesx($sourceImage) - imagesx($watermark) - 10, 10],
    // 其他位置类似计算
];

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

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searchT…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…

php 购物车实现session

php 购物车实现session

PHP 购物车实现(基于 Session) 在 PHP 中,使用 Session 实现购物车功能是一种常见方法。Session 可以跨页面存储用户数据,适合临时保存购物车信息。 初始化 Sessio…