如何使用Nano Banana进行图像生成 - 附代码示例
人工智能正在将图像生成和编辑过程转变为流畅的工作流程。现在,只需一个简单的提示,您就可以让计算机生成或编辑现有图像。Google刚刚推出了其新的图像生成和编辑模型"Nano Banana"——Gemini 2.5 Flash。这是一个强大、灵活的工具,正在改变我们对图像生成和处理的思考方式,绝对是开发者工具包中不可或缺的一部分。
什么是"Nano Banana"?
Nano Banana是Google DeepMind最新的图像编辑和生成工具。想象一下,您拥有一位极其才华横溢、闪电般快速的艺术家随时待命。您可以向它描述任何内容——“一名宇航员在月球上骑马”——然后,噗,图像就出现了。或者,您递给它一张狗狗的照片并说:“给狗狗戴上一顶帽子”,它会立即完成,同时保持狗狗的原貌。
这就是Nano Banana的本质。它是Gemini系列中的先进AI模型,专门为快速、智能的图像生成和精细编辑而设计。它能理解您的自然语言命令,使您能够轻松实现复杂的视觉想法或对现有图像进行精确修改。
项目设置
步骤1:获取Google Gemini的API密钥
使用Nano Banana的第一步是获取API密钥。前往Google AI Studio,点击"Create API key",然后从现有的Google Cloud项目中选择一个项目来生成新密钥。
生成API密钥后,请安全保存。
步骤2:安装SDK和其他依赖项
打开终端并运行:
1
|
pip install google-generativeai pillow python-dotenv
|
我们将使用Pillow进行图像处理,使用python-dotenv安全管理API密钥。
步骤3:设置环境
为了安全起见,务必将API密钥从代码中分离。为此,我们通常使用环境变量。在项目根目录中创建名为.env的文件,并添加您的API密钥:
1
|
GEMINI_API_KEY="您的API密钥"
|
图像生成与编辑示例
示例1:文本到图像生成
文本到图像就像一位可以绘制您描述的任何内容的艺术家。您只需编写提示(一个句子或描述),AI就会生成与您描述匹配的独特、高质量图像。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import os
import google.generativeai as genai
from PIL import Image
from io import BytesIO
from dotenv import load_dotenv
# 配置
load_dotenv()
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel('gemini-2.5-flash-image-preview')
# 提示、图像和响应设置
prompt = "一只金毛小狗坐在雏菊田中,明亮欢快"
output_filename = "text_to_image_result.png"
# 从文本提示响应保存图像的辅助函数
def save_image_from_response(response, filename):
"""从API响应保存图像的辅助函数"""
if response.candidates and response.candidates[0].content.parts:
for part in response.candidates[0].content.parts:
if part.inline_data:
image_data = BytesIO(part.inline_data.data)
img = Image.open(image_data)
img.save(filename)
print(f"图像已成功保存为{filename}")
return filename
print("响应中未找到图像数据")
return None
def main():
print(f"正在为提示生成图像:'{prompt}'...")
response = model.generate_content(prompt)
save_image_from_response(response, output_filename)
if __name__ == "__main__":
main()
|
示例2:图像到图像编辑
图像到图像编辑就像照片编辑器。您可以上传现有图片并描述如何修改它,而不是从头开始。例如,您可以要求移除背景、添加新对象,甚至完全改变艺术风格。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import os
import google.generativeai as genai
from PIL import Image
from io import BytesIO
from dotenv import load_dotenv
# 配置
load_dotenv()
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel('gemini-2.5-flash-image-preview')
# 提示、图像和响应设置
input_image_path = "input_dog.png"
prompt = "给狗狗戴上一顶小巫师帽和眼镜"
output_filename = "edited_image_result.png"
def save_image_from_response(response, filename):
"""从API响应保存图像的辅助函数"""
if response.candidates and response.candidates[0].content.parts:
for part in response.candidates[0].content.parts:
if part.inline_data:
image_data = BytesIO(part.inline_data.data)
img = Image.open(image_data)
img.save(filename)
print(f"图像已成功保存为{filename}")
return filename
print("响应中未找到图像数据")
return None
def main():
print(f"正在编辑图像'{input_image_path}',提示:'{prompt}'...")
try:
img_to_edit = Image.open(input_image_path)
response = model.generate_content([prompt, img_to_edit])
save_image_from_response(response, output_filename)
except FileNotFoundError:
print(f"错误:未找到文件'{input_image_path}'")
if __name__ == "__main__":
main()
|
示例3:多图像融合
多图像融合就像合并两个或多个图像或对象。上传多个图像并指示AI将它们无缝混合成一个合成图片。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import os
import google.generativeai as genai
from PIL import Image
from io import BytesIO
from dotenv import load_dotenv
# 配置
load_dotenv()
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel('gemini-2.5-flash-image-preview')
# 提示、图像和响应设置
image1_path = "dog_image.png"
image2_path = "cap_image.png"
prompt = "让第一张图像中的狗狗戴上第二张图像中的帽子。帽子应该逼真地戴在狗狗头上"
output_filename = "dog_with_cap_result.png"
def save_image_from_response(response, filename):
"""从API响应保存图像的辅助函数"""
if response.candidates and response.candidates[0].content.parts:
for part in response.candidates[0].content.parts:
if part.inline_data:
image_data = BytesIO(part.inline_data.data)
img = Image.open(image_data)
img.save(filename)
print(f"图像已成功保存为{filename}")
return filename
print("响应中未找到图像数据")
return None
def main():
print(f"正在融合图像'{image1_path}'和'{image2_path}'...")
try:
img1 = Image.open(image1_path)
img2 = Image.open(image2_path)
response = model.generate_content([prompt, img1, img2])
save_image_from_response(response, output_filename)
except FileNotFoundError:
print("错误:未找到一个或两个图像文件")
if __name__ == "__main__":
main()
|
示例4:图像修复
此功能可以修复老旧、褪色或损坏的照片。上传图片并要求Gemini进行修复,包括锐化低质量图像、为老旧黑白照片上色和增强纹理。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import os
import google.generativeai as genai
from PIL import Image
from io import BytesIO
from dotenv import load_dotenv
# 配置
load_dotenv()
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel('gemini-2.5-flash-image-preview')
# 提示、图像和响应设置
input_image_path = "old_photo.png"
prompt = "修复这张老旧褪色的照片。锐化细节,去除划痕或损坏,增强色彩,使其看起来像新的高质量照片"
output_filename = "restored_image_result.png"
def save_image_from_response(response, filename):
"""从API响应保存图像的辅助函数"""
if response.candidates and response.candidates[0].content.parts:
for part in response.candidates[0].content.parts:
if part.inline_data:
image_data = BytesIO(part.inline_data.data)
img = Image.open(image_data)
img.save(filename)
print(f"图像已成功保存为{filename}")
return filename
print("响应中未找到图像数据")
return None
def main():
print(f"正在尝试修复图像:'{input_image_path}'...")
try:
old_photo = Image.open(input_image_path)
response = model.generate_content([prompt, old_photo])
save_image_from_response(response, output_filename)
except FileNotFoundError:
print(f"错误:未找到文件'{input_image_path}'")
if __name__ == "__main__":
main()
|
进阶应用
这只是冰山一角!Nano Banana非常多功能。以下是一些项目创意:
- 批量处理:从提示列表中自动生成多个图像
- 创意资源:直接从Python脚本设计游戏或应用程序的图标、背景或角色精灵
- 数据处理:将Nano Banana集成到数据管道中,根据数据输入以编程方式编辑或生成图像
- AI艺术画廊:构建后端服务,允许用户提交提示并接收图像
总结
Nano Banana(Gemini 2.5 Flash Image)不仅是一个酷炫的技术工具,更是开发者和创意人员的实用强大工具。只需几行代码,您就可以利用其功能并将视觉想法变为现实。这种简化的方法使您可以轻松开始、实验并将这种视觉魔法集成到您的项目中。