素材 · gpt-image-2.5 版
按你的要求:先把素材和小兔子做出来看效果,动画(42 帧序列帧)这一轮一帧都没做。 效果你认可之后再做下一步。
一、先说换模型这件事#
你说"换成 gpt-2.5",我查了网关的模型清单,生图相关的有这些:
| 模型 | 说明 |
|---|---|
gpt-image-2.5 |
← 这一版用的就是这个 |
gpt-image-2.5-flare / gpt-image-2.5-sunburst |
2.5 的两个变体 |
gpt-image-2pro / gpt-image-2pro-4k |
2pro 系列 |
gpt-image-2 |
上一版用的 |
那个工具固定用 gpt-image-2,参数里没有 model 这一项。
所以我写了 tools/art/genimg.py,直接走网关的 /v1/images/generations,
模型名当参数传。这一版的每一张都是这么出的。
二、兔子#

和旧版的对照(左边是代码画的,右边是生图):

左边那只身体是一个椭圆、耳朵是两个叶片形、眼睛是一个小黑椭圆——它是由 4 个几何图元拼起来的。 右边这只:细密手绘线稿、米灰平涂带斑驳、纸张颗粒感。
抠底后的样子(程序实际能用的素材)#

而且不能按"接近米白"直接判颜色——画面里的白毛、白花也是米白,
按颜色判会把兔子内部挖空。
正确做法是从四边 flood fill:只去掉"和画布边界连通"的那一片背景。
实现是 tools/art/gen_cut.py。
三、场景物件(10 个)#

出图原稿(一张图里排一行,再由程序切开):

第一版按列投影的空白切,一行 10 个物件只切出 5 件。 原因:树冠在列投影上会和邻居重叠 —— 树干之间有空隙, 但树冠横着铺过来把空隙盖住了。
列投影法只对"左右完全不相交"的物件成立,而植物素材恰恰不是。 改成:先把前景膨胀 4 次(把同一物件的碎叶、离散点并起来), 再跑二维连通域。同一张图切出正好 10 件,和出图要求的数量一致。
四、野花(6 种)#

出图原稿:

上一版(gpt-image-2)视觉复核的原话是「约 6 株、多数没有花头」——
生图把"12 株各自有花头"简化成了 6 株枝叶。
这一版改成明确要"6 株、每株必须有明显花头",出来的 6 株花形确实各不相同。
但目标是 30 种(5 条风景带 × 6 种)。现在这 6 种只是一轮的量, 还差 24 种,要按这个质感再出 4 轮。
五、拼起来的竖屏场景#

做法:天空和远山是程序画的渐变(沿用已验收的灰蓝色板),
树、灌木、草、石头、野花、兔子都是生图素材抠底后摆上去的。
和 tools/art/gen_scene.py 一致。
演示页 notes.html 里的运行时场景仍然全部是代码画的几何图形,这一轮没有换。
这张图的作用是回答一个问题:生图素材摆在一起,色调统不统一、前后景分不分得开。
视觉复核的回答是:「偏手绘植物插画风,不是电脑几何图形; 没有明显合成错误、无明显白边或方形抠图痕迹;前景中景远景基本分得开; 低饱和蓝灰加米白、绿色,色彩协调统一。」 唯一提到的问题是「底部雾化较重,前后景界限略弱」——这条要改。
六、这一版没做的事#
- 42 帧序列帧,一帧都没有。 这是下一轮的事,也是这件事真正的难点。
- 30 种植物只做了 6 种,还差 24 种。
- 运行时场景没换,演示页里还是旧的代码画图形。
- 生图素材还没过
check_sat.py/check_tone.py。 这一版的色值是我按提示词写的(#808090系蓝灰 +#F0E8E0米白), 和实测的参考图色板方向一致,但逐张量化验收还没跑。 - 底部雾化那条(前后景界限略弱)没改。
七、实测:这一版和参考图的距离#
按元素口径(从四边 flood fill 去掉纸底,只看画上去的像素)量:
| 素材 | 元素内明度 | 饱和 P90 | 色度 P50 | 元素内暗部 |
|---|---|---|---|---|
| 【基准】参考图 | 0.624 | 15.3% | 12 | 3.0% |
| 兔子 | 0.689 | 16.6% | 13.0 | 3.1% |
| 场景物件(10 个) | 0.622 | 24.4% | 16.0 | 3.9% |
| 野花(6 种) | 0.640 | 10.7% | 11.0 | 0.0% |
| 拼接场景 | 0.614 | 19.6% | 21.0 | 8.9% |
这一版的色度(11~21)和参考图(12)在同一档 —— 而上一版代码画的素材是 6。
要改的两处:
- 兔子偏亮(0.689 vs 基准 0.624)。眼下是因为它大面积是米白毛色, 提示词里把"腹部和胸口米白"写得太重了。下一版把背部的灰压深一档。
- 场景物件的饱和偏高(24.4% vs 基准 15.3%)。
多半来自苔藓石和原木上那点绿色。下一版把
#7E9B93换成更灰的#82957C。 - 野花没有暗部(0.0%),整株都偏亮偏浅,需要加一点深色叶背和花萼。
提示词里写死十六进制色值,比写"灰蓝色"有效得多。
上一版(gpt-image-2)我说"muted grey-blue palette",
出来的东西自己发明了一套颜色;这一版我把 #808090、#F0E8E0、
#383E4A 这些实测自参考图的值直接写进提示词,色度就落到了同一档。
反过来说:之前三轮"调色板"的工作没有全废—— 参考图的量化结论(色相 220°、色度恒定 12)正好是这一版提示词的依据。 废掉的是"用这些色号去画椭圆",不是这些色号本身。