前言

无论是自己要在精心P过的自拍上添加个性文字,或者是摄影爱好者要在拍摄的作品里添加水印,亦或是在网页或者移动应用中实时生成文字和图片的组合,我们都需要找到一个合适且靠谱的方法来将图片和文字完美的结合在一起。

所以,“最好的编程语言”PHP及其GD库就给我们提供了这样一套简单且高效的解决方案。

我知道,这时候有个实例才是最好的~ 下面就让我来举个简单的栗子!

目标

将用户在网页应用中输入的个人信息与图片结合,生成一张印有用户信息的名片。

效果

1 预设一张图片,作为名片背景

名片背景

2 用户信息输入

信息输入

3 名片生成(点击Continue之后)

名片生成

步骤

在一切开始之前,请使用phpinfo() command来确认GD库已安装。

首先,我们要做的事情很简单,新建一个PHP文件,就叫它main.php吧。

在main.php中,理论上我们需要以下几行代码(本代码基于CakePHP 3):

//创建一个表单提供用户输入功能

echo $this->Form->create();

//只保留value属性,其他属性已省略

echo $this->Form->input(

'First Name',['value' => $firstname, '...' => '...', ...]);

echo $this->Form->input(

'Last Name',['value' => $lastname, '...' => '...', ...]);

echo $this->Form->input(

'City',['value' => $city, '...' => '...', ...]);

echo $this->Form->input(

'State',['value' => $state, '...' => '...', ...]);

/*

* 将img标签指向一个叫做image.php的PHP文件。

* 所有的用户输入信息将以URL的形式保存在img标签的src属性中,

* 在表格提交后即可被image.php通过GET获取。

* 所有变量已通过PHP自带strtoupper函数转换为大写。

*/

echo $this->Html->image("image.php?first=".strtoupper($firstname)."&last=".strtoupper($lastname).

"&location=".strtoupper($city)." ".strtoupper($state), ['fullBase' => true]);

/*

* 上面的代码相当于:

*

*/

//表单提交

echo $this->Form->button('CONTINUE', ['type' => 'submit']);

//关闭表单

$this->Form->end();

接下来,就是创建Where amazing happens的image.php了。包括图片设置,获取用户信息,将文字信息添加到图片上,所有的一切都将在这一步完成。

让我们通过代码来一探究竟吧。

// header() 函数向客户端发送原始的 HTTP 报头。

header('Content-type: image/jpeg');

// 由文件或 URL 创建一个新图象,这里的text.jpg就是效果1显示的预设图片

$rImg = ImageCreateFromJPEG("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有所帮助。

php 汉王云名片_利用PHP自动生成印有用户信息的名片相关推荐

  1. php开发工程师名片,PHP编程:利用PHP自动生成印有用户信息的名片

    <PHP编程:利用PHP自动生成印有用户信息的名片>要点: 本文介绍了PHP编程:利用PHP自动生成印有用户信息的名片,希望对您有用.如果有疑问,可以联系我们. 前言 PHP教程无论是自己 ...

  2. php名片自动生成,利用PHP自动生成印有用户信息的名片

    前言 无论是自己要在精心P过的自拍上添加个性文字,或者是摄影爱好者要在拍摄的作品里添加水印,亦或是在网页或者移动应用中实时生成文字和图片的组合,我们都需要找到一个合适且靠谱的方法来将图片和文字完美的结 ...

  3. python利用什么写模板_利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受"利奇马"的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口 ...

  4. python乘法符号手写_利用Python自动生成小学生加减乘除口算考试题卷,不再为手写算术题烦恼!...

    还在为给孩子抄各种各样的口算题而烦恼?孩子上小学一年级之后,加减乘除的口算就要开始练习了,老师肯定会让家长出题.所以我们当家长的,要提前准备一下,就利用Python开发了一套自动生成小学生口算题的小应 ...

  5. python RTL自动生成_利用python自动生成证件照

    又到了一次交个人信息表的时候了,在word照片框贴照片时发现自己之前放在e盘的电子照片不见了,我丢.之前去照相馆就只留了一张底片,疫情当前(打游戏懒得出门),作为时代好青年,出门拍照是不可能的,为一张 ...

  6. 【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像

    前言 深度学习作为人工智能的重要手段,迎来了爆发,在NLP.CV.物联网.无人机等多个领域都发挥了非常重要的作用.最近几年,各种深度学习算法层出不穷, Generative Adverarial Ne ...

  7. 【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像...

    模型训练与在线预测服务.推荐算法四部曲.机器学习PAI实战.更多精彩,尽在 开发者分会场 [机器学习PAI实战]-- 玩转人工智能之综述 [机器学习PAI实战]-- 玩转人工智能之商品价格预测 [机器 ...

  8. 利用Flex自动生成C语言词法分析器

    利用Flex自动生成C语言词法分析器 Flex介绍 C语言词法规则 具体实现 源代码 测试代码 实验结果 Flex介绍   1975年Mike Lesk和实习生Eric Schmidt设计并实现了一个 ...

  9. 利用ApacheCXF自动生成webservice的客户端代码

    利用ApacheCXF自动生成webservice的客户端代码 一.环境准备 1.JDK环境 2.下载apache-cxf发布包,举例版本为3.2.14,解压发布包,设置CXF_HOME,并添加%CX ...

最新文章

  1. 听说微软出了个 Windows XP reStart Edition? 重启版?
  2. matlab显示mat
  3. 实验吧---隐写术之男神一般都是很低调的!
  4. socket传输过程
  5. cbow word2vec 损失_Skip-gram和CBOW知识点
  6. sap.ushell.Container.getService.done的设计思路
  7. C#网络编程(订立协议和发送文件) - Part.4
  8. win8计算机丢失xinput1+3.dll,xinput1 3.dll丢失怎么办 win8下xinput1 3.dll丢失解决方法
  9. 三星国行S10 5G版本要来了?这次它抢在了国产手机的前面
  10. C语言——变量篇(一)变量关键字static、auto、extern、register
  11. 黑色的php编辑器,五款常用的免费php编辑器推荐
  12. H.264 AVC 编解码标准
  13. 卷积神经网络基础知识二
  14. ARPG游戏角色行为分析
  15. apicloud的使用
  16. 本周解锁新技能:识简谱、弹音阶(2019 年 8 月 3日)
  17. springboot 项目起步讲解及自动装配原理
  18. 计算机教室100字介绍,班级简介范文100字
  19. 背景图片和img图片实用性差异
  20. MUI 支付案例(支付宝/微信)

热门文章

  1. 《12个工作的基本》读书分享
  2. java中,判断当前时间是否处于某个一个时间段内
  3. 从0到1:朋友圈爆款背后的计算机视觉技术与应用 | 百万人学AI
  4. selenium2java 截图保存桌面(内含一坑)
  5. 网秦创始人林宇称遭史文勇非法拘禁 后者称是恶意中伤
  6. 投资问题(动态规划)
  7. 开水果店的水果怎么保鲜,新手开水果店水果保鲜方法
  8. 香港Web3 迎来下一个「八达通时刻」,也给COSO带来不一样的新世界
  9. SAS9.4更新sid,有效期至2022年11月30日
  10. 学完大数据基础,可以按照我写的顺序学下去