PHP如何生成随机水印图片
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍PHP如何生成随机水印图片,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、需求网站的布局用到了类似慕课网课程列表的风格,每一个课程是一个banner图,图下面
千家信息网最后更新 2025年01月21日PHP如何生成随机水印图片
这篇文章主要介绍PHP如何生成随机水印图片,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、需求
网站的布局用到了类似慕课网课程列表的风格,每一个课程是一个banner图,图下面是标题加简介。因为课程的数量较大没有为所有的课程设计专门的banner,所以需要按照一定的规则,来自己生成图片(本打算用div布局来解决,但div+img在响应式布局中不是很好控制)。
二、工具&素材
1.PHP开启GD图形库扩展
2.准备多个小的水印图
3.获取预生成图片的背景色RGB值
三、代码
生成图片的过程,代码中做了详细的注释。
class GenerateRandomImage{ /** @var integer 图片宽度 */ public $imgWidth = 272; /** @var integer 图片高度 */ public $imgHeight = 162; /** @var 根据type不同来生成不同的背景颜色,目前留个type分别为蓝色、紫色、×××、绿色、灰色、土××× */ public $type = ''; /** @var 图片上要显示的文字 */ public $text = ''; /** @var integer 图片上文字的字体大小 */ public $fontSize = 16; public function __construct($type, $text) { $this->type = $type; $this->text = $text; } /** * 创建生成随机图片 * @author bignerd * @since 2017-03-21T14:49:41+0800 */ public function createImg() { /** @var 创建一个指定图片大小的空调色板 $p_w_picpath = p_w_picpathcreate($this->imgWidth, $this->imgHeight); $rgb = $this->getBackground($this->type); /** @var 为图片创建一个背景色 */ $backgroundColor = p_w_picpathcolorallocate($p_w_picpath, $rgb['r'], $rgb['g'], $rgb['b']); /** @var 创建文字白色字体 */ $textColor = p_w_picpathcolorallocate($p_w_picpath, 255, 255, 255); /** @var 字体文件路径 */ $font = $_SERVER['DOCUMENT_ROOT'].'/public/font/simhei.ttf'; $x = 18;//文字起始位置x坐标 $y = 50;//文字起始位置y坐标 /** 文字写入图片 */ $angle = 0;//角度0 p_w_picpathttftext($p_w_picpath, $this->fontSize, $angle, $x, $y, $textColor, $font, $this->text); /** @var 水印图片路径 **/ $waterImgPath = $this->randWaterImage(); /** @var 获取图片信息,返回值$waterInfo[2] 为图片类型常量 */ $waterInfo = getp_w_picpathsize($waterImgPath); /** @var 将图片类型常量转换为真正的类型,如png */ $waterType = p_w_picpath_type_to_extension($waterInfo[2], false);//获取文件类型 $createImageFunc = 'p_w_picpathcreatefrom'.$waterType; /** @var 创建一个水印图片的副本 $createImageFunc 为根据图片类型来动态生成预调用的创建图片函数*/ $mask = $createImageFunc($waterImgPath); $posX = $this->imgWidth - $waterInfo[0];//水印图片,在目标图片中的位置的x坐标 $posY = $this->imgHeight - $waterInfo[1];//水印图片,在目标图片中的位置的y坐标 /** http请求响应类型设置为 p_w_picpath/png 以便直接显示为图片 */ header("Content-Type:p_w_picpath/png"); /** 水印图片复制到创建的p_w_picpath */ p_w_picpathcopy($p_w_picpath, $mask, $posX, $posY, 0, 0, $waterInfo[0], $waterInfo[1]); p_w_picpathpng($p_w_picpath);//输入图片到浏览器或者文件 p_w_picpathdestroy($p_w_picpath);//销毁图片 } /** * 图片背景颜色的rgb值 * @author bignerd * @since 2017-03-21T14:50:16+0800 */ public function getBackground() { $background = [ '1'=>['r'=>0, 'g'=>160,'b'=>233], '2'=>['r'=>198,'g'=>0, 'b'=>110], '3'=>['r'=>237,'g'=>109,'b'=>0], '4'=>['r'=>33, 'g'=>148,'b'=>75], '5'=>['r'=>63, 'g'=>58, 'b'=>57], '6'=>['r'=>202,'g'=>162,'b'=>101], ]; return $background[$this->type]; } /** * 随机水印图片路径 * @author bignerd * @since 2017-03-21T14:51:00+0800 * @return 路径 */ public function randWaterImage() { $folder = [ '1'=>'product','2'=>'team','3'=>'architecture','4'=>'developer','5'=>'test','6'=>'engineer' ]; $targetFolder = $_SERVER['DOCUMENT_ROOT'].'/public/p_w_picpaths/role/'.$folder[$this->type].'/'.rand(1,38).'.png'; return $targetFolder; }}$p_w_picpath = new GenerateRandomImage(1,"扛得住的MySql数据架构");$p_w_picpath->createImg();
这样我们就可以直接在页面中使用 来直接显示图片。
以上是"PHP如何生成随机水印图片"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
图片
水印
生成
文字
类型
位置
坐标
背景
课程
路径
字体
布局
文件
不同
代码
内容
大小
常量
目标
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳交友软件开发报价
网络安全法强化了
创造与魔法抄家服务器怎么进
数据分析还是软件开发
深圳市中彩网络技术有限公司
抓取数据库数据到excel
成都市网络安全游园会
加强网络技术防控
数据库间接口
阿克苏网络技术销售价格
服务器xshell远程连接
电脑数据库怎么看文件
防止网络安全危害的诗
学软件开发的前景
越南网络安全措施
普通主板能放服务器机箱吗
lol各个服务器的实力
宝坻区信息网络技术创造辉煌
定制化软件开发案例
单位网络安全处罚
服务器机箱怎么理线
服务器xshell远程连接
崇明区自动化软件开发推荐咨询
学软件开发的前景
实时数据库转为关系数据库
福建潮流软件开发设施应用
四川交友软件开发费用是多少
失落的方舟欧美服务器名字
云众互联网科技有限公司
四年级网络安全手抄报写什么