功能详解

诗图围绕「把照片写进诗里」这一件事,提供 AI 配诗、卡片渲染、风格切换、AI 引擎配置等功能。下面逐一介绍。

AI 配诗

看图选诗流程

AI 配诗是诗图的核心。整体链路是:

  1. 选定一张照片后,应用先在本地保存原图,并生成一张压缩图(800px、质量 80,够 AI 识别又省 token)
  2. 把压缩图上传到临时图床,拿到一个公开可访问的 URL
  3. 把图床 URL 连同提示词一起发给 AI 视觉模型
  4. 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 请求失败时不会弹生硬的报错,而是给一段诗意文案 + 具体原因 + 重试按钮。常见错误分类:

状态码提示
超时 / 无网络网络慢,请重试
401API Key 无效,请检查设置
429请求过于频繁,请稍后重试
404API 地址或模型名不存在,请检查设置

报错对话框里还会附上一段「诊断信息」(请求 URL、模型、状态码、服务端返回),方便复制发给开发者排查。

数据与隐私

本地存储

所有诗作数据都存在本地:

  • 诗作数据 — 存在本地 SQLite 数据库(shitu.db 的 poem_cards 表),包含标题、作者、朝代、体裁、诗句、注解、风格、模板等
  • 图片文件 — 存在应用本地文档目录的 shitu/ 文件夹下
  • 设置 — 存在 shared_preferences,包括 AI 配置、默认诗风、图片质量、卡片版式、主题等

应用本身不需要注册账号,不收集个人身份信息。

联网时机

应用只在「AI 配诗」这一步需要联网,涉及两处上传:

  1. 图床上传 — 把压缩图传到临时图床(upload.gudong.site),拿一个公开 URL 给 AI 看;图片 15 天后自动删除
  2. AI 请求 — 把图床 URL 和提示词发给配置的 AI 服务,由 AI 返回诗作

详见 隐私政策。

规划中的能力

以下能力为后续迭代方向,当前版本暂未实现:

  • 离线诗词库兜底 — 内置一批经典诗词,网络不可用时也能配诗
  • 每日免费额度 — 计划每天 3 次免费 AI 生成(当前直接走配置的 AI Key,无应用层限流)
  • 买断解锁 — 计划提供无限生成 + 全部模板 + 无图模式的买断方案
Last Updated:
Contributors: ruibin3