功能详解
诗图围绕「把照片写进诗里」这一件事,提供 AI 配诗、卡片渲染、风格切换、AI 引擎配置等功能。下面逐一介绍。
AI 配诗
看图选诗流程
AI 配诗是诗图的核心。整体链路是:
- 选定一张照片后,应用先在本地保存原图,并生成一张压缩图(800px、质量 80,够 AI 识别又省 token)
- 把压缩图上传到临时图床,拿到一个公开可访问的 URL
- 把图床 URL 连同提示词一起发给 AI 视觉模型
- AI 返回一首意境贴切的真实诗作(结构化 JSON),应用容错解析后渲染成诗图卡
AI 被要求只返回真实存在的诗,不编造;并要附上一段 30-60 字的注解,说明为何此诗配此图,写得像一段小散文。
三段式仪式动效
配诗过程不是干等一个加载圈,而是分成三个阶段,每段配一句文案和动效:
| 阶段 | 文案 | 含义 |
|---|---|---|
| 观图 | 正在看这幅画… | AI 正在识别画面主体、色彩、情绪、季节、意境 |
| 寻诗 | 千首诗中,寻那一句… | AI 正在从诗词库里挑最贴切的那一首 |
| 落款 | 落笔成章… | 结果已出,朱砂印章盖上 |
整个过程背景图始终可见(轻微压暗 + 墨色渐变),不黑屏、不弹对话框,顶部留一个关闭按钮,可随时退出。
风格切换
配诗时可以带风格偏好,影响 AI 挑诗的方向。风格不新增接口,只是在提示词里追加约束:
| 风格 | 提示词约束 |
|---|---|
| 自动 | 优先古典诗词;画面气质更契合时也可选现代诗或外国诗译作 |
| 古体 | 优先从中国古典诗词(唐诗、宋词、《诗经》等)中选取 |
| 现代 | 优先选取现代诗(北岛、顾城、海子等)或古诗词的现代演绎 |
可以在生成预览页临时切换,也可以在设置里改默认诗风。
返回的诗包含什么
AI 每次返回一首诗的完整结构化数据:
| 字段 | 说明 |
|---|---|
| 标题 | 诗名,如「湖上秋月」 |
| 作者 | 作者名 |
| 朝代 | 朝代或国别,如「唐」「宋」「现代」「波斯」 |
| 诗句 | 数组,每句一项,不带结尾标点(标点由前端处理) |
| 体裁 | 五言绝句 / 七言绝句 / 五言律诗 / 七言律诗 / 词 / 现代诗 / 外国诗 |
| 注解 | 30-60 字,说明此诗配此图的画面感与情感 |
卡片模板
已实现的模板
诗图当前提供两种卡片版式,可在「设置 > 卡片版式」切换:
| 模板 | 风格 | 适合场景 |
|---|---|---|
| 融合 · 图底文字(默认) | 图片铺底,底部渐变压暗,诗文浮于其上,朱砂印章落角 | 风景、氛围照,照片本身是主角 |
| 书札 · 上图下文 | 上半照片(约 58%)、下半宣纸底竖排诗文(约 42%),像展开的书信 | 日常、生活照,图文并重 |
两种模板都会渲染成 3:4 竖版的高清 PNG(逻辑尺寸 × pixelRatio 3),适合发朋友圈;竖排诗文会根据是五言还是七言自适应字号,防止拥挤。
设计中的模板
完整规划共有 5 款模板,目前先实现了上面两款,其余会在后续版本迭代:
| 模板 | 风格 | 适合 |
|---|---|---|
| 墨韵(规划) | 宣纸底 + 图片做「窗」+ 竖排书法 + 朱砂印章 | 山水、古意照片 |
| 素笺(规划) | 白底卡片 + 横排宋体 + 细线框,像一张信笺 | 日常、生活照 |
| 留白(规划) | 图片占上 1/3,大留白 + 单句大字 | 极简、情绪照 |
| 月下(规划) | 深色底 + 月光渐变 + 银白文字 | 夜景、剪影 |
| 剪影(规划) | 图片全幅做底 + 半透明遮罩 + 诗句居中 | 朋友圈海报 |
模板在设计上是「一组布局参数」,新增模板只需继承基类注册一行,历史数据会自动回退到第一个模板,保证兼容。
无图模式「心中诗」
此功能为规划中,当前版本暂未实现。
设想是:不拍照,只输入一句话,AI 就能生成一张纯文字的诗意壁纸 / 海报。适合没有合适照片、却想配一段诗意文字发出去的场景。入口计划放在设置页的「心中诗」。
图片处理
选图与压缩
| 环节 | 参数 | 说明 |
|---|---|---|
| 选图 | 受「图片质量」设置档位控制 | 三档:高清 2160px / 标准 1620px / 省空间 1080px,默认高清 |
| 给 AI 的压缩图 | 800px、质量 80、JPEG | 由原图二次压缩生成,足够识别又能省 token |
| 诗图卡导出 | pixelRatio 3 的 PNG | 本地 Widget 截图渲染,无 WebView 兼容问题 |
本地目录结构
所有图片都存在应用本地数据目录下的 shitu/ 文件夹:
{应用文档目录}/shitu/
photos/{时间戳}_o.jpg — 原图
photos/{时间戳}_a.jpg — 给 AI 的压缩图
cards/{时间戳}_c.png — 渲染出的诗图卡
删除一张诗图时,会一并清理它的原图、压缩图和卡片图。
AI 引擎配置
BYOK(自带 Key)
诗图不绑定单一 AI 服务,只要兼容 OpenAI Chat Completions 协议的视觉模型都能用。内置了共享体验配置(硅基流动 + Qwen 视觉模型),开箱即用;也支持换成自己的服务。
在「设置 > AI 服务」可配置三项:
| 字段 | 说明 | 示例 |
|---|---|---|
| API 地址 | 兼容 OpenAI 协议的服务地址,可带或不带 /chat/completions 后缀 | https://api.siliconflow.cn/v1/chat/completions |
| API Key | 服务商提供的密钥 | sk-xxxxxxxx |
| 模型 | 一个支持看图的视觉模型名 | Qwen/Qwen3-Omni-30B-A3B-Captioner |
应用会智能拼接完整请求地址:如果你填的地址已经以 /chat/completions 结尾就直接用,否则自动补上。配置页提供「保存」和「恢复内置」两个按钮。
内置默认配置
为让新用户零门槛体验,应用内置了一套共享配置:
- 服务:硅基流动(SiliconFlow)
- 模型:
Qwen/Qwen3-Omni-30B-A3B-Captioner
注意:内置的共享 Key 写在源码里,会被反编译泄露,因此只是体验用的低配额 Key。长期使用建议换成自己的。
错误提示
AI 请求失败时不会弹生硬的报错,而是给一段诗意文案 + 具体原因 + 重试按钮。常见错误分类:
| 状态码 | 提示 |
|---|---|
| 超时 / 无网络 | 网络慢,请重试 |
| 401 | API Key 无效,请检查设置 |
| 429 | 请求过于频繁,请稍后重试 |
| 404 | API 地址或模型名不存在,请检查设置 |
报错对话框里还会附上一段「诊断信息」(请求 URL、模型、状态码、服务端返回),方便复制发给开发者排查。
数据与隐私
本地存储
所有诗作数据都存在本地:
- 诗作数据 — 存在本地 SQLite 数据库(
shitu.db的poem_cards表),包含标题、作者、朝代、体裁、诗句、注解、风格、模板等 - 图片文件 — 存在应用本地文档目录的
shitu/文件夹下 - 设置 — 存在
shared_preferences,包括 AI 配置、默认诗风、图片质量、卡片版式、主题等
应用本身不需要注册账号,不收集个人身份信息。
联网时机
应用只在「AI 配诗」这一步需要联网,涉及两处上传:
- 图床上传 — 把压缩图传到临时图床(
upload.gudong.site),拿一个公开 URL 给 AI 看;图片 15 天后自动删除 - AI 请求 — 把图床 URL 和提示词发给配置的 AI 服务,由 AI 返回诗作
详见 隐私政策。
规划中的能力
以下能力为后续迭代方向,当前版本暂未实现:
- 离线诗词库兜底 — 内置一批经典诗词,网络不可用时也能配诗
- 每日免费额度 — 计划每天 3 次免费 AI 生成(当前直接走配置的 AI Key,无应用层限流)
- 买断解锁 — 计划提供无限生成 + 全部模板 + 无图模式的买断方案