前言
无论是自己要在精心P过的自拍上添加个性文字,或者是摄影爱好者要在拍摄的作品里添加水印,亦或是在网页或者移动应用中实时生成文字和图片的组合,我们都需要找到一个合适且靠谱的方法来将图片和文字完美的结合在一起。
所以,“最好的编程语言”PHP及其GD库就给我们提供了这样一套简单且高效的解决方案。
我知道,这时候有个实例才是最好的~ 下面就让我来举个简单的栗子!
目标
将用户在网页应用中输入的个人信息与图片结合,生成一张印有用户信息的名片。
效果
1 预设一张图片,作为名片背景
2 用户信息输入
3 名片生成(点击Continue之后)
步骤
在一切开始之前,请使用phpinfo() command
来确认GD库已安装。
首先,我们要做的事情很简单,新建一个PHP文件,就叫它main.php吧。
在main.php中,理论上我们需要以下几行代码(本代码基于CakePHP 3):
<"image.php".strtoupper($firstname)."&last=".strtoupper($lastname). "&location=".strtoupper($city)." ".strtoupper($state), ['fullBase' => true]); /* * 上面的代码相当于: * <img src="/UploadFiles/2021-04-02/image.php">接下来,就是创建Where amazing happens的image.php了。包括图片设置,获取用户信息,将文字信息添加到图片上,所有的一切都将在这一步完成。
让我们通过代码来一探究竟吧。
<"test.jpg"); // 为一幅图像分配颜色 $cor = imagecolorallocate($rImg, 0, 0, 0); // 我们可以自定义与图片结合的文字字体 $font = "./arial.ttf"; // 设置最终生成图片的宽度以及文字相对于图片所在的高度 $imgWidthSetting = 676; $textHeightOffset = 220; // 解码main.php里img标签已编码的URL字符串,包括first, last以及location $first = urldecode($_GET['first']); $last = urldecode($_GET['last']); $location = urldecode($_GET['location']); /* * 取得需要向图片上添加的文本的范围。imagettfbbox() 返回一个含有8个 * 单元的数组表示了文本外框的四个角。 */ $width_first = imagettfbbox(60, 0, $font, $first); $width_last = imagettfbbox(70, 0, $font, $last); $width_location = imagettfbbox(35, 0, $font, $location); // 进一法取整, $width_变量[2]代表右下角X坐标位置 $x_first = ceil($imgWidthSetting - $width_first[2]); $x_last = ceil($imgWidthSetting - $width_last[2]); $x_location = ceil($imgWidthSetting - $width_location[2]); // 利用imagettftext()函数将文本“写入”图像 imagettftext($rImg, 60, 0, $x_first, $textHeightOffset+120, $cor, $font, $first); imagettftext($rImg, 70, 0, $x_last, $textHeightOffset+210, $cor, $font, $last); imagettftext($rImg, 35, 0, $x_location, $textHeightOffset+290, $cor, $font, $location); // 输出图象到浏览器或文件,quality 为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大) imagejpeg($rImg,NULL,100); // Free up memory, imagedestroy() 释放与 image 关联的内存。 imagedestroy($rImg);到这里,我们就完成了通过PHP把文字添加到图片上的所有步骤。当用户输入个人信息并提交表单后,通过image.php,效果3的名片就会自动生成。
总结
利用PHP将文字与图片结合虽然简单,但可以衍生出很多不同的应用方法。譬如,我们可以将名片背景及生成的名片隐藏起来,只对用户显示信息输入界面。同时,我们在代码中接入打印机的API。这样,当用户输入完自己的信息点击继续之后,显示着用户信息的名片就会直接打印出来。这很适用于用户参加线下聚会活动check in时的场景。
总之,PHP作为“最好的编程语言”,编码不统一,性能遭诟病,语法不严谨。的确,PHP的槽点太多,足够我们黑三天三夜。但我们又必须承认,PHP及其庞大的内置函数库为网页开发者们提供了便捷且强有力的工具。你看,简单的几个函数,就可以完美实现文字与图片的结合,所以PHP还是有很多人支持的。希望本文对大家学习PHP有所帮助。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]