图像与设计
批量统一风格修图:让一组照片看起来像同一次编辑
当用户上传多张照片并希望它们风格统一(如统一色调、批量套预设、修复混合光线)时,用 Adobe 工具按同一套参数批量处理并输出成品链接。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
批量统一风格修图:让一组照片看起来像同一特定
解决思路
- 先调用 adobe_mandatory_init 初始化(参数 skill_name: "adobe-batch-edit-photos", skill_version: "3.1.0"),获取文件处理规则与工具路由指引。
- 初始化后立即调用 image_list_presets 获取该用户套餐可用的全部预设,并按命名信号把每个预设归类到对应风格(Auto/Balanced、Warm & Golden、Bright & Airy、Moody & Cinematic、Cool & Fresh、Vibrant & Punchy、Muted & Film),构建 Look→Preset Map;每个预设只归入一个风格,优先选 Adaptive: 前缀的预设,每个风格最多选 2 个(1 主 1 备);若返回为空或 403,则跳过预设步骤并在总结中注明「Presets unavailable on this plan」。
- 同时从同一份预设列表构建 Selective Adaptive Map(用于选择性增强):按命名信号分入 Subject/Person、Sky、Background、Body Parts/Clothes 四个桶,每桶最多选 1 个预设,无匹配则留空。
- 图片导入:调用 asset_add_file(无参数)打开文件选择器;它返回 imageURIs: [] 属正常,等用户选完文件后调用 read_widget_context 解析出真正的 presigned S3 URL 作为 sourceURIs[];若 URI 以 dcx-stage.adobe.io 开头,必须先经 read_widget_context 解析。
- 无 widget 环境(如 Codex)的导入回退:先检查 egress 状态,若禁用则不要调用上传工具;本地文件且 egress 开启时,逐个文件获取大小与 MIME 类型,调用 asset_initialize_file_upload({ path, media_type }),把文件字节 PUT 到返回的上传 URL,再调用 asset_finalize_file_upload({ filename, transfer_document }),用返回的 CC URL 作为源;已在 Creative Cloud 的文件直接引用其 CC URI;egress 禁用且无选择器时告知用户该环境无法暂存文件。
- 理解目标风格:先从对话中推断风格(warm/golden/cinematic/moody/bright and airy/muted/film/cool/vibrant/punchy)、微调项(recover highlights、lift shadows、more contrast、more vibrant、desaturate 等)、裁剪(no crop、square、1:1、portrait crop 等)以及是否要选择性 AI 增强。
- 分三种情况:全部明确则跳过提问直接进入预览;部分明确则先确认已推断项,再用 AskUserQuestion 只问剩余问题;全不明确则展示完整 5 个问题(Q1 基础风格单选、Q2 微调多选、Q3 裁剪比例单选、Q4 裁剪取景方式单选仅当 Q3 非 No crop、Q5 是否启用选择性 AI 增强单选)。
- 若用户消息已暗示取景方式(如 center crop、crop to my face)则跳过 Q4 直接推断;若只给了比例没给取景方式,默认用 Smart crop。
- 按风格映射表把参数合并成单次 image_apply_adjustments 调用:Warm & Golden 用 tempA=32/tempB=120/tempLuminance=67 + vibrance +15;Bright & Airy 用 tempA=20/tempB=60/tempLuminance=62 + saturation -10/vibrance +10 + brightness +15;Moody & Cinematic 用 tempA=20/tempB=-50/tempLuminance=45 + saturation -20 + contrast +25;Cool & Fresh 用 tempA=18/tempB=-123/tempLuminance=45 + vibrance +10;Auto、Vibrant & Punchy、Muted & Film 不传 tempA/tempB/tempLuminance(Vibrant & Punchy 用 vibrance +30/saturation +15/contrast +10;Muted & Film 用 saturation -35/vibrance -10/contrast +10)。
- 微调参数映射:Recover blown highlights→highlights: -60;Lift dark shadows→darks: +40;Boost contrast→contrast: +30(只传增量,不与风格对比度相加);Boost color intensity→vibrance: 30;Desaturate→saturation: -30;Adjust exposure→exposure: +0.5 或 -0.5(未指明方向默认 +0.3);Tune bright areas→lights: +20;Blur background→单独调用 image_apply_gaussian_blur,blurRadius: 12, blurTarget: "background"。
- 向用户复述确认设置(风格、选择性增强、微调、裁剪比例与取景方式),然后进入样本预览,不要直接开始全量批处理。
- 样本预览:先用 image_crop_and_resize 把第 1 张图缩到长边 1200px(output: { width: 1200, height: 1200 }, fit: "contain"),得到 preview_source_url,仅对它跑完整流程(Step 3–7,含 Step 5e 若已选)。
- 调用 asset_preview_file 展示 Before(原始全分辨率 sourceURIs[0])与 After(处理后的 1200px 输出);无 widget 环境则直接列出两个 URL 并标注 Before/After,或下载到工作区引用本地路径。
- 若 N > 5,在确认提示中附上耗时预估(6–10 张约 3–5 分钟,11–20 张约 5–10 分钟,20+ 张 10 分钟以上)。
- 用 AskUserQuestion 询问预览是否满意(✅ 应用到全部 N 张 / 🎛️ 先调整设置 / ❌ 取消),必须等用户明确选 Yes 才能开始全量批处理。
- 若用户选「调整设置」,重新展示完整问题集,确认新设置后必须重新跑预览并再次获得明确确认,没有跳过预览的捷径。
- 全量批处理时对每张图调用 image_auto_straighten(uprightMode: "auto", constrainCrop: true),失败则用原图并注明「straighten skipped」。
- 对每张图调用 image_apply_auto_tone,参数 type: "cameraRawFilter",outputFileType: "jpeg"。
- 应用风格:Step 5a 用单次 image_apply_adjustments 批量套用色温/饱和度/亮度对比度;Step 5b 按 Look→Preset Map 用 image_apply_preset 逐图套预设(先主后备,链式传递输出);预设返回 403 则全部跳过并在总结注明,不要重跑 Step 5a。
- Step 5e 选择性增强(仅用户明确选择时):对每张图调用 image_select_subject,bodyParts 传 ["Face", "Torso", "Clothing", "Skin", "Hair", "Sky", "Background"],按检测结果映射到 Selective Adaptive 桶,按 Subject→Body Parts→Sky→Background 顺序链式套用对应预设;未检测到元素则跳过该图所有选择性预设;单个预设 403 则跳过并注明。
- Step 6 微调:把所有选中的微调项合并成单次 image_apply_adjustments 调用,输入为 Step 5 的输出(若跑了 5e 用 selective_urls[],否则用 5b 最后输出,否则用 5a 的 look_adjusted_urls[]),只传微调增量值;背景模糊单独用 image_apply_gaussian_blur 逐图处理。
- Step 7 裁剪(若选了 No crop 则整步跳过):两种模式都用 fit: "reframe" 加目标比例;Center crop 用 align: { x: 0.5, y: 0.5 };Smart crop 用 focus: "face"(人像)或 focus: "subject"(非人像场景)。
- Step 8 预览:把最终输出 URL 直接传给 asset_preview_file,不要再经过 image_crop_and_resize(会引入白边或裁掉主体);失败则用纯文本链接列出。
- 调用 create_firefly_board,把最终输出 URL 放进 import_adobe_storage 数组;若返回 board_url 则写进完成消息,若报错或无 URL 则省略并注明「Firefly Board unavailable」(重试无效)。
- 按 N ≤ 3 或 N > 3 的模板输出完成消息,包含每张图的下载链接、Firefly Board 链接(若有)以及所用风格说明。
- 全程只报告主要阶段开始、每图失败(只记一次)和最终总结,保持简洁。
- 错误处理:401 要求用户重新通过 Adobe OAuth 认证后重试;403 或「No approval received」对可选步骤跳过并注明(重试无效);「file too large or corrupted」立即停止该图、不重试、提示用户换更小或未损坏的文件并继续处理其余图片;上传 PUT 5xx 或无 egress 则回退到 asset_add_file 选择器;所有步骤都失败的图返回原 URI 并在总结中明确标出。
适用边界 · 注意事项
- 需要逐张精修、追求单张最佳效果而非整组统一风格时,本流程优先保证一致性,不适合单图极致调优。
- 没有 Adobe 账号或未登录(该技能要求 Signed-In),或所用套餐不含所需预设/工具权限时,预设与部分步骤会被跳过。
- 在无 widget 且 egress 被禁用的环境中处理本地文件时,无法暂存文件到 Creative Cloud,需换到支持 asset_add_file 选择器的环境。