截图美化
用几何模型推演纯色/渐变背景、边距、圆角、阴影与透明图合成策略;核对同一图在不同边距/圆角下预览与导出的图层一致性。输出确定性 JSON 计划,不生成图片字节。
输入与参数
spec— 几何 / 图层模型 JSONscale— 导出倍率backgroundPreset— 切换背景(不重置输入/裁剪)frameAssetStatus— 框素材加载状态clipboardMode— 输入场景(粘贴 / 选文件回退)format— 输出格式(计划中的格式字段)
真实示例
{"image":{"id":"shot-01","width":1280,"height":800,"bytes":245760,"hasAlpha":true,"format":"png"},"crop":{"x":0,"y":0,"width":1280,"height":800},"padding":48,"radius":20,"background":{"kind":"gradient","from":"#E8F3EC","to":"#F7F8F5","alpha":1},"shadow":{"blur":24,"offsetY":12,"alpha":0.18},"frame":{"kind":"browser","assetStatus":"ok"},"preset":"auto","format":"png","scale":1,"clipboardMode":"desktop-paste"}
(1280×800 透明 PNG;padding=48;radius=20;浏览器框;scale=1)
→ 设计画布 1400×952;预览 1200×816;导出 1x = 1400×952(1,332,800 px)、2x = 2800×1904(5,331,200 px);预览签名 === 导出签名;transparentBlackEdge=false;composite.steps 以 clearRect(rgba(0,0,0,0)) 开始;downloadableImage=false;文件名 shot-beautify-<时间戳>.json。
限制与失败处理
不解码真实 File/Blob、不创建 Canvas 2D 上下文、不编码 PNG/WebP/JPEG;输入上限 15MiB/16MP,导出上限 64MP/单边 16384px,超限在分配画布前报 EXPORT_PIXEL_LIMIT 或 CANVAS_SIDE_LIMIT;只提供 1x/2x;真实渲染导出未实测。
FAQ
改边距会影响导出像素吗?
会。设计画布宽 = 裁剪宽 + 2×边距 + 左右框边;高同理。例如本例 1280+96+24=1400、800+96+56=952。
透明图会出现黑边吗?
不会;显式透明重置后先画背景再以 source-over 在圆角裁剪内画原图,implicitBlackFills=0。