ThinkPHP怎么生成AI插画?多模态设计功能全解析【解答】

秋瑶同学_5325

秋瑶同学_5325

2026-06-24

642人浏览

原创

thinkphp项目中生成ai插画需配置api密钥、封装模型类处理prompt清洗与认证请求、控制器支持同步/异步生成、前端提供风格尺寸等参数,并严格校验图像合法性及prompt去重。

thinkphp怎么生成ai插画?多模态设计功能全解析【解答】

在ThinkPHP项目中生成AI插画,本质是让后端接收用户输入的文本描述(prompt),安全调用多模态AI绘画API(如文心一格、DeepSeek Image、千帆ERNIE-VL等),完成图像生成、存储与元数据落库,全程不依赖本地GPU或模型加载。

配置AI服务凭证与环境变量

登录千帆大模型平台或百度智能云AI Studio,创建图像生成应用,获取AK/SK或API Key;将密钥写入.env文件而非硬编码:
AI_IMAGE_API_KEY=sk-xxxxxx
AI_IMAGE_BASE_URL=https://aip.baidubce.com/rpc/2.0/ernie-vl/generate

这一步必须做,否则后续所有请求都会因认证失败返回401 Unauthorized;【密钥切勿提交至Git仓库】。

定义AI图像生成模型类

在app/model下新建AIImageModel.php,继承think\Model,封装统一请求逻辑:

① 使用think\Http或GuzzleHttp\Client构造POST请求,自动拼接access_token参数(需先调用/oauth/2.0/token换取);
② 对用户传入的prompt做基础清洗:过滤控制字符、截断超长文本(≤512字)、替换中文标点为英文空格;
③ 设置超时为30秒,避免前端长时间等待;
④ 若响应含error_code字段且非0,抛出AIImageException并记录错误上下文(含原始prompt和时间戳)。

控制器接收请求并触发生成

在app/controller/AIImage.php中编写create()方法:

方法一:同步直出(适合低频小图)
接收POST /ai-image/create,校验prompt非空→调用AIImageModel::generate()→解析返回的image_url→用file_get_contents()拉取远程图→保存至public/uploads/ai/并生成唯一文件名(如ai_20260601170522_8a3f.png)→写入数据库记录user_id、prompt、storage_path、model_used(如"ernie-vl-4.5")。

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载

方法二:异步队列(推荐用于生产)
改用think\Queue投递任务到Redis队列→控制器立即返回{"status":"queued","task_id":"qk_9a2b"}→后台Worker进程消费后执行下载与落库→通过WebSocket或轮询通知前端生成完成。

前端交互与多模态参数支持

在模板中使用form提交,除基础prompt外,额外提供以下可控字段:

• style下拉选项:写实 / 国风 / 像素 / 水彩 / 3D渲染
• size单选:1024x1024 / 768x1024 / 1024x768(不同API对尺寸有硬性限制)
• refine开关:启用后追加“高清细节、锐利边缘、专业摄影布光”等增强词(需预置语义映射表,避免用户乱填)
• reference_image文件上传:若API支持图生图(如ERNIE-VL的image_url字段),则读取Base64并嵌入请求体。

提交前用JavaScript校验prompt长度,防止后端反复报错;【style值必须与API文档严格一致,否则返回空图】。

图像存储与安全防护

生成的图片不得直接存Web可访问路径而不加校验——先写入runtime/ai_temp/临时目录→调用getimagesize()验证文件头是否为合法PNG/JPG→再移动至public/uploads/ai/→最后删除临时文件。

数据库中不存原始prompt全文,而是存md5(prompt . salt)用于去重;同一prompt 24小时内重复提交,直接返回历史storage_path,跳过API调用。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

10084

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5981

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2075

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3748

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4454

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3491

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4977

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3882

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11862

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程