透明背景素材生成:Nano Banana 2 绿幕提示词 + FFmpeg 抠图管线
本文介绍了一种利用AI生成透明背景PNG素材的高效方法。通过绿幕技术配合FFmpeg自动抠图管线,可以批量生产透明素材,解决传统获取方式昂贵、耗时的问题。文章详细拆解了实现原理:首先让AI生成纯绿背景图片,再用FFmpeg的colorkey滤镜去除绿色背景并处理边缘溢出,最后自动裁切透明区域。该方法适用于轮廓清晰的实物素材,成本低至每个$0.1,但处理半透明物体时仍有局限。GitHub上已有封装好
做过前端、游戏开发或者视频制作的人,对透明背景 PNG 素材的需求量巨大:图标、贴纸、吉祥物、UI 元素、视频叠加层。
以前获取这类素材要么去图库买(贵,而且撞图),要么请设计师画(慢),要么自己用 PS 抠图(累)。
Nano Banana 2 配合一套绿幕生成 + FFmpeg 自动抠图的管线,可以批量生产带透明通道的 PNG 素材。GitHub 上已经有一个开源的 CLI 工具把这个流程封装好了。我来拆解一下它的原理和实际效果。
原理:为什么是绿幕?
直接让 AI 生成透明背景的图片,目前大多数模型做不到。模型输出的是 JPEG 或 PNG,但里面并没有 Alpha 通道信息。
绿幕方案的思路很简单:
- 让模型生成一个纯绿色背景的图片(模拟绿幕拍摄)
- 用图像处理工具把绿色部分扣掉,变成透明
- 处理边缘的绿色溢出(Green Spill)
这个思路在影视后期里已经用了几十年,原理成熟,效果可靠。
第一步:绿幕提示词
在 Prompt 末尾加上绿幕指令。比如:
一个可爱的机器人吉祥物,白色金属材质,蓝色的眼睛,挥手打招呼的姿势。
背景是纯绿色 (pure green screen, #00FF00),均匀照明,无阴影。
关键点:
- 明确写"pure green screen"或者"solid green background"
- 要求"均匀照明,无阴影",否则绿色背景上会有深浅不一的色块,后面不好抠
- 主体本身尽量避免绑色元素(如果吉祥物是绿色的,那就用蓝幕)

实测中,模型生成的绿色不一定是标准的 #00FF00,更可能是 #05F904 或者类似的近绿色。后面的抠图工具需要能容忍这个偏差。
我的实测渠道用的是Nano Banana AI
第二步:FFmpeg 抠图

FFmpeg 内置了 colorkey 滤镜,可以把指定颜色变透明:
ffmpeg -i input.jpg \
-vf "colorkey=0x05F904:0.3:0.15,despill=type=green" \
-c:v png output.png
参数含义:
colorkey=0x05F904:0.3:0.15:把 #05F904 附近的颜色(容差 0.3,柔和度 0.15)变透明despill=type=green:去除主体边缘的绿色溢出。这一步很关键,否则白色机器人的边缘会带一圈绿色
关于容差值:0.3 是一个中等偏大的值,能处理大部分绿色不均匀的情况。如果误扣了主体的某些部分(比如主体上有浅绿色元素),需要调小到 0.2 左右。
第三步:自动裁切
抠完图后,图片四周会有大量透明区域。用 ImageMagick 自动裁切:
convert output.png -trim +repage output_trimmed.png
这样就得到了一张大小合适、背景透明的 PNG 素材。
完整管线脚本
把上面三步串成一个 Bash 脚本:
#!/bin/bash
PROMPT="$1"
OUTPUT_NAME="${2:-asset}"
GREEN_PROMPT="${PROMPT} Background is pure green screen, solid green, evenly lit, no shadows."
# 生成绿幕图(用 nano-banana CLI)
nano-banana "${GREEN_PROMPT}" -o "${OUTPUT_NAME}_green" -s 2K
# 检测绿幕颜色(取角落像素)
GREEN_COLOR=$(convert "${OUTPUT_NAME}_green.jpg" -crop 1x1+5+5 -format '%hex' info:)
# FFmpeg 抠图 + 去绿溢
ffmpeg -i "${OUTPUT_NAME}_green.jpg" \
-vf "colorkey=0x${GREEN_COLOR}:0.3:0.15,despill=type=green" \
-c:v png "${OUTPUT_NAME}_raw.png" -y
# ImageMagick 裁切
convert "${OUTPUT_NAME}_raw.png" -trim +repage "${OUTPUT_NAME}.png"
# 清理中间文件
rm -f "${OUTPUT_NAME}_green.jpg" "${OUTPUT_NAME}_raw.png"
echo "Done: ${OUTPUT_NAME}.png"
使用方法:
bash gen_transparent.sh "可爱的机器人吉祥物,白色金属材质" robot_mascot
批量生产
把多个素材需求写成一个列表,循环生成:
prompts=(
"一只橙色的小狐狸站立|fox"
"一顶牛仔帽|cowboy_hat"
"一把中世纪宝剑|sword"
"一个红色心形气球|heart_balloon"
"一个金色奖杯|trophy"
)
for item in "${prompts[@]}"; do
IFS='|' read -r prompt name <<< "$item"
bash gen_transparent.sh "$prompt" "$name"
sleep 2
done
5 个素材大约 2 分钟跑完,每个成本约 $0.1。
实际效果和局限
效果好的情况:
- 主体是实物(人物、动物、物体),轮廓清晰
- 主体和绿色对比度高(白色、红色、蓝色主体效果最佳)
- 主体没有半透明部分
效果差的情况:
- 主体有半透明元素(比如玻璃杯、翅膀、纱裙),绿色会透过来,抠出来有色偏
- 主体本身是绿色或黄绿色,会被误扣
- 主体有非常细的边缘(比如头发丝),容易出锯齿
对于半透明物体,可以尝试用蓝幕替代(Prompt 里写 “pure blue screen”,FFmpeg 改成 colorkey=blue),效果会好一些但仍不完美。
开源工具
如果不想自己写脚本,GitHub 上的 nano-banana-2-skill 工具直接带了 -t 参数:
nano-banana "可爱的机器人吉祥物" -t -o mascot
它会自动完成绿幕生成、颜色检测、FFmpeg 抠图、裁切的全部流程。前提是本地装了 FFmpeg 和 ImageMagick。
# macOS 安装依赖
brew install ffmpeg imagemagick
更多推荐

所有评论(0)