You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP为图片添加居中倾斜45°的Logo水印?

实现PHP图片水印45度倾斜居中对角放置

要实现图片水印45度倾斜并居中对角放置的效果,你需要借助GD库的imagerotate函数先旋转水印,同时处理旋转后的画布尺寸与透明属性,再将旋转后的水印复制到基础图片的对应位置。以下是修改后的完整代码:

<?php
header('content-type: image/jpeg');
$poster_img = dirname(__FILE__) . '/base.jpeg';
$water_img = dirname(__FILE__) . '/watermark.png';

// 获取基础图片和水印的尺寸
list($poster_width, $poster_height) = getimagesize($poster_img);
list($water_width, $water_height) = getimagesize($water_img);

// 创建基础图片和水印的资源
$posterimage = imagecreatefromjpeg($poster_img);
$watermark = imagecreatefrompng($water_img);

// 计算45度旋转后水印画布的尺寸(避免旋转后内容被裁剪)
$angle = 45;
$rad = deg2rad($angle);
$new_water_width = (int)($water_width * abs(cos($rad)) + $water_height * abs(sin($rad)));
$new_water_height = (int)($water_width * abs(sin($rad)) + $water_height * abs(cos($rad)));

// 创建支持透明的旋转后画布
$rotated_watermark = imagecreatetruecolor($new_water_width, $new_water_height);
imagealphablending($rotated_watermark, false);
imagesavealpha($rotated_watermark, true);
$transparent = imagecolorallocatealpha($rotated_watermark, 255, 255, 255, 127);
imagefill($rotated_watermark, 0, 0, $transparent);

// 旋转水印(-45表示逆时针旋转45度,适配对角倾斜需求)
$rotated = imagerotate($watermark, -$angle, $transparent);
// 将旋转后的水印复制到新画布的居中位置
imagecopy($rotated_watermark, $rotated, ($new_water_width - imagesx($rotated)) / 2, ($new_water_height - imagesy($rotated)) / 2, 0, 0, imagesx($rotated), imagesy($rotated));

// 计算旋转后水印在基础图片上的居中位置
$x = ($poster_width - $new_water_width) / 2;
$y = ($poster_height - $new_water_height) / 2;

// 将旋转后的水印复制到基础图片
imagecopy($posterimage, $rotated_watermark, $x, $y, 0, 0, $new_water_width, $new_water_height);

// 输出并保存图片
imagejpeg($posterimage, 'watermarked_image.jpg'); 

// 销毁所有资源
imagedestroy($posterimage);
imagedestroy($watermark);
imagedestroy($rotated_watermark);
imagedestroy($rotated);
?>

关键步骤说明:

  • 计算旋转后画布尺寸:由于图片旋转45度后,原内容会超出原画布范围,通过三角函数计算新画布的宽高,确保旋转后的水印完整显示。
  • 透明属性处理:创建旋转画布时开启透明保存,并用全透明色填充背景,避免旋转后出现白色底色。
  • 旋转与居中:使用imagerotate旋转水印,再将旋转后的水印居中放置到新画布中,最后计算基础图片上的居中位置完成复制。

内容的提问来源于stack exchange,提问作者Abdu ssamad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:57:51