图片转矢量:候选接口与接入核对
核对日期:2026-10-11,北京时间;源码基线 2642fd42。本页是 I7 的接入准备,未实现或启用图片转 SVG,也未调用收费接口。首个真实任务仍待用户选择;现有文本规范化演示继续使用原处理器。接口可用与有报价不证明搜索需求、付费用户或订阅成立。
为什么保留这个候选
如果第一站沿用此前讨论的 Image to SVG,其交付应为上传图片 → 矢量化 → 对照预览 → 下载可编辑 SVG。Recraft 有直接转换接口,适合继续验证单一任务;能否保留细节、文字与可编辑路径仍需真实样本。文字提示生成一幅新的 SVG 使用另一接口,不能当成保留原图的转换质量证据。官方转换说明
已核对的外部契约
| 项目 | 当前公开资料 | 对接选择 / 尚缺证据 |
|---|---|---|
| 请求 | POST https://external.api.recraft.ai/v1/images/vectorize,服务端 Bearer 认证 | 使用 Worker 原生 HTTP,不为一个操作新增模型路由器或客户端 SDK。接口说明 |
| 输入 | PNG / JPEG / WebP,低于 20 MB;短边至少 256、长边不超过 4096 像素,最多 16 MP | 模板先保持已有 PNG / JPEG 与 5 MiB 限制;新增像素尺寸检查,不宣称已有 WebP 支持。限制说明 |
| 传送方式 | JSON 可传图片 URL 或数据 URL,也支持二进制表单 | 首轮采用 JSON 数据 URL,从私有 R2 读取原始字节后提交;不公开私有输入对象。输入说明 |
| 响应格式 | 可以返回链接、Base64 或多段字节 | 首轮选择 Base64,限制响应与解码大小后存入原私有结果链路;不把外部链接交给用户作为永久结果。结果说明 |
| 成功对象 | 单个 image,含 image_id;顶层有 created 与 credits | 与生成图片的数组响应不同;图片编号不是可查询的请求编号,不混用。转换响应 |
| 结果链接 | 公开、无需登录,约 24 小时;链接丢失不能恢复 | 不用链接模式替代本站所有权校验及存储保留策略。保存限制 |
| 限额 | 每个供应商用户每分钟 100 图片、每秒 5 请求;所有令牌共享 | 本站用户限流不能证明供应商账号总量受限,真实环境需验证总预算 / 并发。限额说明 |
以上是官方公开契约,不是实测结果。输出为 SVG 的声明不能证明内容全是矢量路径,也不能证明复杂照片、文字、渐变或切割用途的质量。
规格中发现的三个接入边界
直接下载并解析官方 JSON OpenAPI:61,391 字节,SHA-256 为 06ca4897b0eb27435f370c2242813a748e52ff28f843a3859a46d44f1e23fba4。确认转换操作、响应引用和结果格式后,按完整路径与字符串检索:本次规格没有记录幂等参数,也没有公开转换任务的查询 / 取消 / 结果找回操作。这个结论只覆盖本次公开规格,不能推断供应商内部没有相关能力。官方规格
第一,文档表单示例使用 file,本次 OpenAPI 的二进制请求却继承名为 image 的字段;两者不一致。JSON 的图片字段在两份资料一致,因此首轮选择数据 URL。不要照搬表单示例并假称已确认运行。表单说明、官方规格
第二,转换操作没有可指定的模型版本字段,响应也没有模型版本。规格顶部的 0.0.1 是 API 文档版本;本站处理器版本也只能表示自己的代码契约。供应商算法版本保持未知,不能填成 V4.1,也不能宣称锁定了不可变模型。是否能满足本站对固定版本的要求,需供应商确认或另选具备版本证据的服务。官方规格
第三,官方错误说明建议对网络超时与服务错误退避重试,但未承诺重试免费或收费去重。本项目要求不确定调用进入 reconciling:付费请求已可能到达供应商而响应丢失时,保持待核对,不直接补发。收到成功结果而本站落库失败,也必须与重新调用供应商分开恢复;这属于本项目交付规则。官方错误说明
成本怎样记录
当前公开价格为每次转换 10 个 API 单位,即 0.01 美元;单位包换算为 1 美元 / 1000 单位。按此报价,100 次为 1 美元,1000 次为 10 美元;这是报价推算,仅包含转换,不是实际账单,也不包含存储、失败、不确定重复、支付费用或其他处理。官方价格
真实接入时分别保存供应商实际返回的单位数、报价版本 / 日期、估算金额与货币,以及本站用户的积分报价和扣返结果。只有报价而没有请求响应时,实际用量与已核实费用留空;供应商已收费但结果不合格导致用户积分返还,也不能把供应商成本清零。若要对照余额,需隔离其他同账号请求;总余额差不能直接归因给某次任务。
现有代码需要怎样扩展
以下按当前源码核对,不是已完成改造。继续复用同一任务、账本、私有存储和维护入口。
| 入口 | 当前限制 | 接入时需要的具体改动 |
|---|---|---|
tasks/store.ts 与 db/schema/tasks.ts | 提交只接受文本处理器;参数类型与输入 pin 都按文本设置 | 增加一个明确的图片处理器与严格参数分支;按处理器校验输入,原文本请求摘要与重放保持 |
tasks/consumer.ts | 只执行文本规范化 | 先核对输入哈希、尺寸和预算,再记录执行边界;一次外部请求之后的存储故障不重新请求供应商 |
tasks/lifecycle.ts 与 tasks/rules.ts | 未知处理器过期进入待核对;仅文本可自动重试 | 为已收到结果 / 已知拒绝 / 不确定发送分别定义恢复,不把存储重试复用为付费调用重试;取消不能伪称供应商已停止 |
| 任务执行记录 | 没有供应商编号、单位数、版本或费用字段 | 在新的增量迁移中记录实际已知事实、空值和调用状态,原 SQL 历史保持;不会给旧文本任务补造零成本 |
tasks/results.ts 与文件校验 | 结果固定命名为文本;上传允许四种已有类型 | 增加服务端 SVG 结果契约、结构 / 大小 / 内容检查和文件类型;不因此默认允许用户上传任意 SVG |
| 文件预览与下载 | 图片用 Blob 图片预览,私有读取有 CSP;文本任务页面文案固定 | 增加原图 / 结果对照及可理解的限制;SVG 不作为 HTML 插入;保留跨账号隔离、下载和到期清理 |
SVG 验收需要解析真实结构并检查视口、路径与资源引用;拒绝脚本、外部依赖、嵌入位图冒充矢量以及超限输出。受限图片预览和下载还需实际浏览器复验,不能仅依靠字符串含有 SVG 标签。颜色 / 路径复杂度与文字保真属于质量样本,结构合格不自动等于产品可用。
下一次真实验收
任务选定且测试调用范围明确后,使用自有或有许可的固定输入:简单图标、透明图案、带文字标识、渐变插画、复杂照片,以及尺寸 / 类型边界。每份记录输入和输出摘要、像素尺寸、路径 / 嵌入对象、耗时、供应商编号 / 单位、人工质量判定及费用来源;不先填写成功率或“一天能做完”。
本地受控流程需覆盖关闭 / 缺配置、明确拒绝、限流、坏输出、发送后超时、成功结果持久化中断、重复队列、取消和积分返还。真实小批次再确认格式契约、转换质量、实际费用与 Worker 限制;两类证据分别保存。正常主库保持已授权的 0012,新增模式只在对应独立环境验收。
本轮仅获取公开文档与规格,本机缓存位于忽略的 .local/recraft-contract-2026-10-11/。Cloudflare 登录复查仍为未登录;没有新增未使用的模型密钥字段、执行迁移、发送图片、调用模型或部署。I7、I15 云端及 I16 两个真实产品继续未完成。