当前位置:首页 > PHP

php实现图片水印

2026-03-13 03:17:47PHP

使用 GD 库添加图片水印

在 PHP 中,可以使用 GD 库为图片添加水印。GD 库是一个开源的图像处理库,支持多种图像格式。

确保服务器已安装 GD 库,可以通过 phpinfo() 查看是否启用。以下是一个简单的实现示例:

php实现图片水印

// 源图片路径
$sourceImage = 'source.jpg';
// 水印图片路径
$watermarkImage = 'watermark.png';
// 输出图片路径
$outputImage = 'output.jpg';

// 获取源图片和水印图片的尺寸
list($sourceWidth, $sourceHeight) = getimagesize($sourceImage);
list($watermarkWidth, $watermarkHeight) = getimagesize($watermarkImage);

// 创建源图片和水印图片的资源
$source = imagecreatefromjpeg($sourceImage);
$watermark = imagecreatefrompng($watermarkImage);

// 设置水印位置(右下角)
$destX = $sourceWidth - $watermarkWidth - 10;
$destY = $sourceHeight - $watermarkHeight - 10;

// 合并水印
imagecopy($source, $watermark, $destX, $destY, 0, 0, $watermarkWidth, $watermarkHeight);

// 保存输出图片
imagejpeg($source, $outputImage, 100);

// 释放内存
imagedestroy($source);
imagedestroy($watermark);

添加文字水印

除了图片水印,还可以直接添加文字水印:

php实现图片水印

// 源图片路径
$sourceImage = 'source.jpg';
// 输出图片路径
$outputImage = 'output_text.jpg';

// 创建图片资源
$image = imagecreatefromjpeg($sourceImage);

// 设置文字颜色(红色)
$textColor = imagecolorallocate($image, 255, 0, 0);
// 设置字体路径(使用服务器上的字体文件)
$font = 'arial.ttf';
// 水印文字
$text = 'Copyright';

// 添加文字水印(右下角)
imagettftext($image, 20, 0, imagesx($image) - 200, imagesy($image) - 20, $textColor, $font, $text);

// 保存输出图片
imagejpeg($image, $outputImage, 100);

// 释放内存
imagedestroy($image);

调整水印透明度

如果需要调整水印图片的透明度,可以使用 imagecopymerge 函数:

// 合并水印并设置透明度(50%)
imagecopymerge($source, $watermark, $destX, $destY, 0, 0, $watermarkWidth, $watermarkHeight, 50);

支持多种图片格式

GD 库支持多种图片格式,可以根据源图片的格式使用对应的函数:

  • JPEG: imagecreatefromjpeg(), imagejpeg()
  • PNG: imagecreatefrompng(), imagepng()
  • GIF: imagecreatefromgif(), imagegif()

注意事项

  • 确保服务器有足够的权限读写图片文件。
  • 处理大图片时可能消耗较多内存,需调整 PHP 的内存限制。
  • 水印位置和大小应根据实际需求调整。
  • 文字水印的字体文件需放置在服务器可访问的路径。

以上方法提供了基础的图片水印实现,可根据具体需求调整参数和功能。

标签: 水印图片
分享给朋友:

相关文章

vue实现水印组件

vue实现水印组件

Vue 水印组件实现 基础水印组件实现 创建一个基础水印组件,通过 props 接收文本、颜色、大小等参数: <template> <div class="watermark-…

css3手工制作图片

css3手工制作图片

使用CSS3手工制作图片 CSS3可以通过各种属性如box-shadow、border-radius、gradient等来手工绘制简单的图形或图片效果。以下是几种常见的方法: 绘制圆形 通过bord…

vue实现图片打点

vue实现图片打点

实现图片打点的基本思路 图片打点功能通常指在图片上添加可交互的标记点,点击或悬停时显示相关信息。Vue实现该功能需要结合DOM操作和事件监听。 核心步骤 准备图片和容器 在Vue组件中设置一个相对定…

vue实现图片预览

vue实现图片预览

实现图片预览功能 在Vue中实现图片预览功能可以通过多种方式完成,常见的有使用原生HTML5的<dialog>元素、第三方库如viewer.js或vue-photo-preview,以及自…

vue实现图片单选

vue实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能可以通过多种方式完成,以下是两种常见的实现方法: 方法一:使用 v-model 和单选按钮 通过将单选按钮与图片绑定,利用 v-mod…

vue实现水印组件

vue实现水印组件

Vue 水印组件的实现方法 使用Canvas绘制水印 在Vue组件中通过Canvas动态生成水印图案,将其作为背景添加到目标元素上。 <template> <div ref="…