新闻中心
php如何实现图片文字水印动态位置_php根据图片尺寸计算水印坐标与对齐方式
通过GD库动态计算水印位置,需先用getimagesize获取图片尺寸,结合imagettfbbox计算文字实际占用区域,再根据对齐方式(如left/center/right和top/middle/bottom)与边距参数确定坐标,最终调用imagettftext将文字绘制到图像上,实现自适应布局的水印添加功能。

在PHP中为图片添加文字水印时,水印的位置不能固定写死,而应根据原图尺寸和水印内容动态计算,以确保在不同大小的图片上都能美观展示。通过GD库可以实现这一功能,关键是根据图片宽高、字体大小以及对齐方式(如左上、居中、右下等)来计算水印坐标。
获取图片与字体信息
要动态定位水印,先需要知道原始图片的尺寸和字体渲染后的实际占用区域:
• 使用 getimagesize() 获取原图宽高• 使用 imagettfbbox() 计算文字在指定字体和字号下的包围盒(bounding box),从而得出文字宽高
• 注意:imagettfbbox 返回的是8个元素的数组,代表文本四个角的坐标,可通过最大最小值差值计算宽高
示例代码:
$image_info = getimagesize($image_path);$width = $image_info[0]; // 图片宽度
$height = $image_info[1]; // 图片高度
$font_size = 20;
$angle = 0;
$bbox = imagettfbbox($font_size, $angle, 'arial.ttf', '水印文字');
$text_width = max([$bbox[2], $bbox[4]]) - min([$bbox[0], $bbox[6]]);
$text_height = max([$bbox[1], $bbox[3]]) - min([$bbox[5], $bbox[7]]);
根据对齐方式计算坐标
常见的对齐方式有9种,类似九宫格布局。可以通过传入水平和垂直对齐参数来动态计算位置:
• 水平对齐:left / center / right• 垂直对齐:top / middle / bottom
示例逻辑:
GoEnhance
全能AI视频制作平台:通过GoEnhance AI让视频创作变得比以往任何时候都更简单。
347
查看详情
$margin = 10; // 边距$x = $y = 0;
// 水平定位
if ($align_x == 'left') {
$x = $margin;
} elseif ($align_x == 'center') {
$x = ($width - $text_width) / 2;
} elseif ($align_x == 'right') {
$x = $width - $text_width - $margin;
}
// 垂直定位
if ($align_y == 'top') {
$y = $font_size + $margin; // 基线在底部,需加上字体高度
} elseif ($align_y == 'middle') {
$y = ($height + $text_height) / 2;
} elseif ($align_y == 'bottom') {
$y = $height - $margin;
}
绘制水印并输出图像
准备好坐标后,使用 imagecreatefromxxx() 创建图像资源,再调用 imagettftext() 添加文字:
$image = imagecreatefromjpeg($image_path);$color = imagecolorallocate($image, 255, 255, 255); // 白色文字
imagettftext($image, $font_size, 0, $x, $y, $color, 'arial.ttf', '水印文字');
header('Content-Type: image/jpeg');
imagejpeg($image, null, 80); // 质量80
imagedestroy($image);
可根据需求封装成函数,支持传入图片路径、水印文本、字体、大小、颜色、边距和对齐方式等参数。
基本上就这些,掌握 bbox 计算和坐标逻辑后,适配各种布局都不复杂但容易忽略细节。
以上就是php如何实现图片文字水印动态位置_php根据图片尺寸计算水印坐标与对齐方式的详细内容,更多请关注其它相关文章!
# 上传
# 辽宁关键词排名优化咋做
# seo 搜索网页
# 免费抖音seo咨询
# 辽中区品牌网站建设
# 成都网站营销推广中心
# 中文网
# 可以通过
# 相关文章
# 都能
# 都不
# 这一
# 组中
# 的是
# 如何实现
# php
# 苏州网站建设月总结
# 东莞网站建设专业品牌
# seo基础实战课程
# 实体店营销策划活动推广
# 哪些网站可以优化内容
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Python:递归比较文件夹内容并找出特定类型文件的差异
如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单
谷歌google账号注册详细步骤 谷歌账号注册官方教程
漫蛙2正版漫画站 漫蛙2网页版快速访问入口
CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题
Go语言中的*string:深入理解字符串指针
必由学在线入口 必由学网页版快速登录入口
夸克浏览器图书入口 夸克手机浏览器阅读入口
React中useState与局部变量:理解组件状态管理与渲染机制
移动端XML文件怎么转换成Excel 手机和平板上的解决方案
PDF文件体积过大处理_PDF压缩技巧详解
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
sublime怎么覆盖插件的默认快捷键_sublime快捷键优先级与设置
Django表单提交验证失败后保持字段值不刷新
零跑汽车11月交付量达70327台 实现连续9个月正增长
KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程
星露谷物语官网入口 星露谷物语游戏官网入口
Lar*el DB::listen 事件中的查询执行时间单位解析
fishbowl官网免费版 fishbowl养鱼网站入口
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
多闪网页版在线观看免费入口_多闪官网访问入口
Mac终端命令大全_Mac常用Terminal指令速查
照顾宝贝2小游戏免费秒玩入口
聚水潭ERP登录页面入口 聚水潭ERP官网登录界面
Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示
在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全
Go调试环境为何无法启动_Go调试器启动失败原因与解决策略
PHP中高效并行检查多链接状态的教程
Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式
神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正
Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】
解决Django多数据库/多Schema环境下外键迁移问题
taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】
126邮箱账号注册 电脑版登录入口
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
CSS子选择器:如何区分并样式化嵌套列表的子层级
sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE
企业名称高精度匹配:N-gram方法在结构相似性分析中的应用
AO3网页版最新入口合集 Archive of Our Own在线访问指南
J*aScript教程:根据元素文本内容动态设置背景色
c++如何使用chrono库处理时间_c++标准库时间与日期操作
夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案
精准捕获:如何在页面中监听除特定元素外的所有点击事件
天猫2025双十一0点秒杀攻略 天猫爆款抢购时间
SteamMachine定价或为699美元 大家想入手吗?
QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口
PHP URL参数传递与500错误调试指南
支付宝如何管理隐私设置_支付宝隐私保护的配置技巧


2025-11-29
浏览次数:次
返回列表