bl image edit:把"已有图片 + 一句指令"变成可脚本化的图片加工入口
背景
内容生产与运营场景中,大量图片需要二次加工:换风格、跨图插入元素、批量出图备选。现有路径(手机自带编辑、修图应用、网页对话框)要么不支持自然语言改画面,要么逐张手动、模板受限、产物需手动下载且无法脚本化。需要一个"输入已有图片 + 一句指令"的命令行入口。
能力验证
验证环境 bl 2.1.0,2026-10-21。素材为自生成图片(46.8 s / 50.4 s),用于可公开复现。
风格迁移
bl image edit --image photo.jpg \
--prompt "转换成儿童绘本插画风格:粗黑描边、平涂色块、简化细节" \
--model wanx2.1-imageedit --function stylization_all \
--timeout 900 --out-dir out --out-prefix style
17.2 s。两个前置条件:提示词需给出具体风格要素(仅写"绘本风格"效果微弱);--function 仅对 wanx* 模型生效,默认模型 qwen-image-3.0 下该参数静默无效。

跨图插入
bl image edit --image cat.jpg --image coffee.jpg \
--prompt "把第二张图里的咖啡杯放到第一张图的猫旁边地板上,合成一个画面" \
--model wanx2.1-imageedit --timeout 900 --out-dir out --out-prefix merge
17.2 s。--image 可重复。指令需明确"把什么、放到哪";模糊的"自然合并"只产生弱结果。

批量出图
bl image edit --image photo.jpg --prompt "换成水彩画风格" \
--model wanx2.1-imageedit --function stylization_all --n 4 \
--timeout 900 --out-dir out --out-prefix pick
82.2 s,输出 4 个文件。

无效路径(如实记录)
bl image edit --image cat.jpg \
--prompt "把地板上的两只白色拖鞋从画面里完全去掉,地板补成干净的木地板,其余部分保持原样" \
--negative-prompt "拖鞋,鞋子,鞋" --model wanx2.1-imageedit --timeout 900 --out-dir out --out-prefix rm
三种写法均 exit 0、约 17 s,但目标物体均未移除。--negative-prompt 语义为"生成时避免引入",非"擦除已有内容"。
结论
| 需求 | 结论 |
|---|---|
| 换风格 | ✅ --function stylization_all + 具体风格描述 + 显式 --model wanx2.1-imageedit |
| 跨图插入 | ✅ --image ×2 + 明确的"把什么放到哪" |
| 批量备选 | ✅ --n 4(上限 4,help 标注的 6 与服务端 [1,4] 校验不符) |
| 去除已有物体 | ❌ 不支持,改用消除笔类工具 |
关键要点
--function与模型绑定:仅wanx*生效,默认模型下静默无效,是最常见的"命令没反应"原因。- 耗时方差极大:同命令同
--seed 777两次为 17.5 s 与 514.9 s(29 倍),输出逐像素一致。必须显式--timeout 900并在超时时重试;此为现象与有效做法,非因果结论。 --n实际上限 4:--n 9报parameters.n must be [1,4] integer,与 help 的 max: 6 不一致。- 右下「AI生成」角标不受
--watermark false控制:加参后放大观察角标仍在。自查可用bl vision describe --image x.png --prompt "…有没有文字或水印角标?只回答有或没有…"(1.6 s 返回"有,AI生成")。 --size含*需加引号,否则被 shell 展开通配。- 存盘参数与语音命令不同:图像用
--out-dir+--out-prefix,语音用--out。
另登记一条:--prompt-extend 默认开启会对指令做扩写,追求贴近原指令时可显式关闭做对照,本文未展开该对照。
能力分工:edit 与 generate 是两回事
bl image generate 的输入是一句提示词,产出是从无到有的图;bl image edit 的输入是一张已存在的图(本地路径或 URL),产出是它的修改版。两者面向的问题不同:前者解决"我脑子里有个画面",后者解决"我手里有张照片想改"。本文全部场景属于后者。
对平台能力面而言,这意味着图像链路现在覆盖了"生成—编辑—理解"三段:生成出素材、编辑改素材、vision describe 读素材(本文用它做角标自查,1.6 秒与 3.4 秒两次,模型 qwen3-vl-plus,token 读数 1067 与 5)。三段可以在脚本里串起来,这是网页对话框做不到的。
补一节:提示词写具体和写模糊,差在哪
同一张原图、同一条命令,我只改提示词,跑了两组对照。
第一组是风格化。提示词写"转换成绘本风格",17.5 秒出图,但成品只是比原图柔了一点,不仔细看分不出差别。提示词改成"粗黑描边、平涂色块、简化细节",17.2 秒出图,描边和色块都实实在在出来了。两次耗时几乎一样,差别全在提示词里有没有画面要素。
第二组是跨图合成。提示词写"把两张图自然地合并",17.5 秒出图,它把第二张图里的盆栽搬进了角落,猫和咖啡杯各过各的。提示词改成"把第二张图里的咖啡杯放到第一张图的猫旁边地板上",17.2 秒出图,杯子连杯垫准确落位。
所以这条命令的成败,大半不在参数,在你肯不肯把"改什么、改成什么样、放到哪"说清楚。它不会替你脑补画面。
再补一节:同一条命令,我等了 17 秒和 514.9 秒
我把同一条命令、同一个 seed 值连跑两次。第一次 17.5 秒返回,第二次 514.9 秒返回,差了 29 倍。
我担心第二次是跑坏了,就把两张产物逐像素比了一遍:差异是 0,完全同一张图。两个文件的字节数也一样,都是 1,395,961 字节;MD5 不同,差在 PNG 里带的元数据,不在画面。
也就是说,多等的那八分多钟没有换来任何不同。这件事给我的唯一结论是:耗时不可预期,--timeout 900 必须写,撞了超时重试一次。我不说"是因为没加超时才慢",因为我同时只改了这一处之外的东西都没动,样本也只有两次,够不上因果。
还有一节:help 只给了两个示例,报错给了十个
我故意传了一个不存在的 --function 值,命令报错退出,但报错信息里把全部十个合法取值列了出来。help 里只写了两个示例。
这十个里本文只实测了 stylization_all 一个,其余九个我没跑过,不推荐也不评价。想知道完整清单的,传个错值看报错就行。这不算优雅,但目前是唯一不用猜的办法。
补充一条平台视角的观察:image edit 的返回与 image generate、speech synthesize 一样会带临时签名 URL,脚本化接入时不要把这个 URL 当长期地址存库,落盘应以 --out-dir 的本地文件为准。