让我们通过代码来一探究竟吧。
<?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有所帮助。
更多相关Discuz论坛的内容来自木庄网络博客
标签:Discuz论坛
相关阅读 >>
phpcms和帝国cms二次开发优缺点分析及站长如何适合自己的cms 推荐
php版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
更多相关阅读请进入《Discuz论坛》频道 >>