nano-banana2 怎么用?给生图API 配一套质检 跑量出图有个绕不开的问题一次出三百张人工挑图比出图还累。而且很多废图的特征是固定的——纯色、糊、尺寸不对、明显失败这类完全可以让代码先筛一遍。这篇讲在甜甜圈APIdashengfenshen.cn上批量调图像生成接口之后怎么用几十行代码把明显不能用的自动踢掉。一、先筛便宜的再筛贵的质检要按成本从低到高排能用文件属性判掉的就别去解码像素1. 字节数太小 → 几乎必然是失败图 最便宜 2. 尺寸/比例不对 → 读文件头就知道 3. 纯色或接近纯色 → 需要解码但只看缩略图 4. 清晰度不足 → 解码 计算 5. 内容对不对 → 要调模型最贵 最后再上前四步能刷掉八九成废图剩下的再人工看或送模型判断。二、前三步的实现用 sharpnpm i sharpconst sharp require(sharp); async function quickCheck(buf, { minBytes 20 * 1024, ratio 1, ratioTol 0.02 } {}) { // 1) 字节数正常一张 1K 图不会小于 20KB太小基本是出错了 if (buf.length minBytes) return { ok: false, why: 文件过小 ${(buf.length / 1024).toFixed(0)}KB }; const meta await sharp(buf).metadata(); if (!meta.width || !meta.height) return { ok: false, why: 读不到尺寸文件可能损坏 }; // 2) 比例电商主图要求正方形偏差超过 2% 就不合格 const r meta.width / meta.height; if (Math.abs(r - ratio) / ratio ratioTol) { return { ok: false, why: 比例不对 ${meta.width}x${meta.height} }; } // 3) 纯色检测缩到 16x16 再看标准差比全图统计快几十倍 const { channels } await sharp(buf).resize(16, 16, { fit: fill }).stats(); const maxStd Math.max(...channels.map((c) c.stdev)); if (maxStd 6) return { ok: false, why: 画面接近纯色stdev ${maxStd.toFixed(1)} }; return { ok: true, meta }; }纯色检测先缩到 16×16是关键——全图算统计量在几百张的量级上会很慢而判断是不是一片空白用缩略图完全够。三、清晰度拉普拉斯方差糊图的特征是边缘响应弱。经典做法是算拉普拉斯算子的方差async function sharpness(buf) { const { data, info } await sharp(buf) .greyscale().resize(512, 512, { fit: inside }) .raw().toBuffer({ resolveWithObject: true }); const { width: w, height: h } info; let sum 0, sum2 0, n 0; for (let y 1; y h - 1; y) { for (let x 1; x w - 1; x) { const i y * w x; // 拉普拉斯四邻域之和减去 4 倍中心 const v data[i - 1] data[i 1] data[i - w] data[i w] - 4 * data[i]; sum v; sum2 v * v; n; } } return sum2 / n - (sum / n) ** 2; // 方差越大越清晰 }阈值要自己标定先跑一批已知好图和已知糊图看方差分布在哪儿分开别抄别人的数字——不同题材、不同模型的分布差很多。四、串起来async function screen(items, { workers 8 } {}) { const pass [], fail []; let next 0; await Promise.all(Array.from({ length: workers }, async () { while (next items.length) { const it items[next]; try { const buf await fetchBuf(it.url); const q await quickCheck(buf); if (!q.ok) { fail.push({ ...it, why: q.why }); continue; } const s await sharpness(buf); if (s 60) { fail.push({ ...it, why: 偏糊 ${s.toFixed(0)} }); continue; } pass.push({ ...it, sharpness: s }); } catch (e) { fail.push({ ...it, why: 处理异常 e.message }); } } })); // 按清晰度排序人工只看前面几十张就够了 pass.sort((a, b) b.sharpness - a.sharpness); console.log(通过 ${pass.length} / 废弃 ${fail.length}); return { pass, fail }; }别直接删废图先留着看why的分布。如果偏糊占比特别高多半是提示词或模型选得不对该回去调生成而不是调筛选。五、生成阶段就能减少废图质检是补救源头才是关键同一提示词多出几版再挑比反复调提示词更省时间跑量用nano-banana28 积分/次挑中的再用nano-banana-pro或gpt-image-2出终稿提示词里写清构图和背景正方形构图、纯白背景、商品居中比事后筛有效得多模型代码定位消耗nano-banana2跑量草稿8 积分/次nano-banana-pro终稿支持 1K/2K/4K10 积分/次gpt-image-2细节质感按次计费ttq-cutout抠图10 积分/次六、小结批量出图的自动质检四层字节数 → 尺寸比例 → 纯色 → 清晰度成本从低到高前三层就能刷掉大部分废图。阈值必须自己标定别抄。甜甜圈APIdashengfenshen.cn并发高跑量筛选这套流程才跑得起来模型全nano banana pro、gpt-image-2、Veo 3.1、Sora 2、价格便宜、出图快、稳定。文档地址https://dashengfenshen.cn 。