PHP文字生成图片完整源码分享 | 支持自动换行/居中/一键下载
前言
最近有个朋友问我:“能不能做个简单网页,输入文字直接生成图片?”我一拍大腿:“这需求用PHP分分钟搞定!”今天就带大家用最直白的语言,从零开始实现这个功能。不需要高深技术,跟着做就行!
一、这个工具能干啥?
1. 输入文字:支持换行,想怎么输就怎么输
2. 一键生成:点个按钮直接变图片
3. 自动排版:文字居中显示,尺寸自动适配
4. 直接下载:生成完立刻能保存到手机/电脑
效果就像这样?
源码下载:
想直接要成品,可以在这里下载PHP文字生成图片完整源码
二、核心原理拆解
一句话总结:用PHP的GD库(画图工具)在服务器上“画”出一张图,再转成网页能显示的格式。
具体步骤分解:
1. 收用户输入:网页表单提交文字内容
2. 算图片尺寸:根据文字多少和字体大小,自动计算画布大小
3. 开画布画画:
- 涂背景色(默认白色)
- 写字(默认黑色,自动居中)
4. 转成图片:把画好的图变成网页能直接显示的格式
三、代码逐块解析
1. 收用户输入(表单处理)
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['text'])) { $text = trim($_POST['text']); // 拿到用户输入的文字 // ...后续处理... } ?>
白话解说:
- 当用户点击提交按钮时,PHP会收到一个叫`text`的内容
- `trim()`是去掉文字前后空格,防止用户手滑多打了空格
2. 算图片尺寸(数学题)
$lines = explode("\n", $text); // 按换行符拆分成多行 foreach ($lines as $line) { // 用imagettfbbox函数算每行文字的宽度 $bbox = imagettfbbox($fontSize, 0, $fontFile, $line); $textWidth = $bbox[2] - $bbox[0]; // 找出最宽的那行 } $width = 最宽行的宽度 + 左右边距; $height = 总行数×行高 + 上下边距;
白话解说:
- 就像裁缝量体裁衣,先量文字有多宽多高
- 每行文字单独算宽度,最后取最大值
- 行高=字体大小+8像素(给行间距留点空间)
3. 开始画画(GD库操作)
$image = imagecreatetruecolor($width, $height); // 创建画布 $bgColor = imagecolorallocate($image, 255,255,255); // 白色背景 imagefill($image, 0, 0, $bgColor); // 涂满背景 // 写字(关键!) imagettftext( $image, // 画布 $fontSize, // 字号 0, // 旋转角度(0就是不旋转) $x, $y, // 坐标(自动居中计算出来的) $textColor, // 文字颜色 $fontFile, // 字体文件路径 $line // 要写的文字 );
详细说明:
- `imagecreatetruecolor()`相当于买张白纸
- `imagecolorallocate()`像是选颜料
- `imagettftext()`就是拿笔写字,还能选字体!
4. 转成网页图片(Base64)
ob_start(); // 启动“截图”功能 imagepng($image); // 把画布保存为PNG $imageData = ob_get_clean(); // 拿到截图数据 $base64 = base64_encode($imageData); // 转成Base64编码 echo '<img src="data:image/png;base64,'.$base64.'">'; // 直接显示在网页
详细说明:
- 不用保存成文件,直接把图片数据变成一串特殊编码
- 网页看到`data:image/png;base64,...`就会自动显示为图片
四、你可能遇到的问题
Q1:字体文件是啥?
- 需要准备一个`.ttf`字体文件(比如电脑里的宋体、微软雅黑)
- 把文件放在代码同级目录,修改代码中的`$fontFile`路径
Q2:报错说GD库不存在?
- 找服务器管理员开启GD库(PHP的扩展)
- 本地开发可以用XAMPP/WAMP等集成环境(一般默认开启)
Q3:想改颜色怎么办?
- 改代码里的这两个变量:
$textColorHex = '#FF0000'; // 改成红色 $bgColorHex = '#00FF00'; // 背景改绿色
五、扩展玩法建议
1. 加个颜色选择器:用HTML的`<input type="color">`让用户自选颜色
2. 上传自定义字体:通过表单上传.ttf文件,动态加载
3. 加文字阴影/描边:GD库支持多次绘制创造特效
4. 生成表情包:结合背景图片,把文字打在表情包上
六、总结
这个不到100行的代码,其实藏着三个关键技术点:
1. GD库操作 - PHP的画图神器
2. 自动计算尺寸 - 让图片完美包裹文字
3. Base64直出 - 不用存文件直接显示
下次如果有人问“怎么快速把文字转图片”,你就可以甩出这个方案!代码已打包好,复制就能用,赶紧动手试试吧~
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看