当前位置:首页 > 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 函数在图片上添加文字水印

$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 函数

$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 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现表单

php实现表单

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

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php实现排序

php实现排序

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

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php搜索功能实现

php搜索功能实现

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