当前位置:首页 > 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中实现图片拖拽功能可以通过HTML5的拖放API结合Vue的事件处理来完成。以下是一个完整的实现方法: 基础拖拽实现 为图片元素添加draggable属性并绑定相关事件:…

js实现图片滚动效果

js实现图片滚动效果

使用CSS动画实现图片滚动 通过CSS的@keyframes和animation属性实现无缝滚动效果。将图片容器设置为横向排列,通过动画平移位置。 <style> .scroll-c…

react如何引用图片

react如何引用图片

在React中引用图片的方法 使用import直接引入图片 在React组件中,可以通过import语句将图片作为模块引入。这种方式适合在组件内部使用图片,Webpack会处理图片的路径和打包。 i…

vue 实现图片预览

vue 实现图片预览

实现图片预览的基本思路 在Vue中实现图片预览功能,通常需要结合HTML5的File API和URL.createObjectURL方法。用户选择图片文件后,通过JavaScript读取文件内容并生成…

vue实现图片组件

vue实现图片组件

Vue 实现图片组件的方法 基础图片组件实现 创建一个基础的图片组件,支持动态传入图片路径和替代文本。在Vue项目中新建一个ImageComponent.vue文件: <template>…

vue 实现图片截取

vue 实现图片截取

使用 Vue 实现图片截取 在 Vue 中实现图片截取功能通常需要借助第三方库或原生 Canvas API。以下是两种常见的方法: 使用 cropperjs 库 安装 cropperjs 库: n…