通知 欢迎关注我的店铺天天软件圆

PHP文字生成图片完整源码分享 | 支持自动换行/居中/一键下载

2025-04-12
0评论
/
阅读
爱搜啊

前言  

最近有个朋友问我:“能不能做个简单网页,输入文字直接生成图片?”我一拍大腿:“这需求用PHP分分钟搞定!”今天就带大家用最直白的语言,从零开始实现这个功能。不需要高深技术,跟着做就行!

一、这个工具能干啥?  

1. 输入文字:支持换行,想怎么输就怎么输

2. 一键生成:点个按钮直接变图片

3. 自动排版:文字居中显示,尺寸自动适配

4. 直接下载:生成完立刻能保存到手机/电脑

效果就像这样?  

PHP文字生成图片的小工具源码

源码下载:

想直接要成品,可以在这里下载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(已满)

饿了么红包
饿了么红包


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件

标签: php
于2025-04-12发布