使用Python脚本实现免费文本生成图像功能
在本教程中,我们将介绍如何使用Python脚本生成图像,基于用户提供的文本描述。
通过调用Siliconflow的API,您可以快速创建高质量的图像,并将其保存到您的计算机上。
以下是完整的步骤,包括环境配置、脚本说明和操作方法。
1. 环境配置
1.1 安装Python
确保您的计算机上已安装Python(建议版本3.7及以上)。您可以从Python官方网站下载并安装。
1.2 安装所需库
打开命令行终端(Windows上为命令提示符或PowerShell,macOS和Linux上为终端),并使用以下命令安装所需的库:
pip install requests Pillow
这些库将用于发送HTTP请求和处理图像。
2. 获取API密钥
为了使用Siliconflow的图像生成API,您需要注册并获取一个API密钥。访问以下链接进行注册:
注册后,您将获得每日免费生成400张图像的权限,如果您通过此邀请链接注册,您还将额外获得2000万Tokens,约合14元人民币的配额;自行注册则无法获得此奖励。
3. 配置脚本
下载并复制以下Python脚本,并根据您的需要进行修改:
import requests
import os
import random
import io
from PIL import Image
# -----------------------------------------------
# 功能说明:
# 这个脚本用于生成图像并保存到用户指定的文件夹。用户需要提供API密钥、生成图像的提示,以及保存图像的文件夹路径。
# 脚本将随机选择模型并尝试将生成的图像压缩到100KB以下。
# -----------------------------------------------
# 定义常量
url = "https://api.siliconflow.cn/v1/images/generations"
image_size = "800x600" # 将图像分辨率设置为800x600
batch_size = 1
num_inference_steps = 20
guidance_scale = 7.5
# 免费模型列表
models = [
"stabilityai/stable-diffusion-3-5-large",
"black-forest-labs/FLUX.1-schnell",
"ByteDance/SDXL-Lightning",
"stabilityai/stable-diffusion-2-1",
"TencentARC/PhotoMaker"
]
# 从文件中读取API密钥
def load_api_key():
api_key_file_path = r'YOUR_API_KEY_FILE_PATH_HERE' # 示例:r'D:\siliconflow\api.txt'
with open(api_key_file_path, 'r') as file:
keys = [key.strip() for key in file.readlines()]
if len(keys) == 1:
selected_key = keys[0] # 只有一个秘钥
else:
selected_key = random.choice(keys) # 随机选择一个秘钥
print(f"使用API密钥: {selected_key}") # 输出当前使用的API密钥
return selected_key
# 手动输入生成图像的提示
prompt = "在海边的岛屿上,有海鸥,月光照耀着海面,灯塔,背景中有船只和鱼在飞" # 在这里修改您的提示
# 生成图像的函数
def generate_image(prompt):
api_key = load_api_key() # 加载随机选择的API密钥
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
model = random.choice(models) # 随机选择一个模型
payload = {
"model": model,
"prompt": prompt,
"negative_prompt": "",
"image_size": image_size,
"batch_size": batch_size,
"seed": None,
"num_inference_steps": num_inference_steps,
"guidance_scale": guidance_scale
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
return response.json()
else:
print("错误:", response.text)
return None
# 保存图像并进行压缩的函数
def save_image(image_url, filename):
img_response = requests.get(image_url)
img = Image.open(io.BytesIO(img_response.content))
# 尝试以JPEG格式保存,并压缩到100KB以内
quality = 85 # 初始质量
while True:
img.save(filename, format='JPEG', quality=quality)
if os.path.getsize(filename) <= 100 * 1024: # 小于或等于100KB
print(f"已保存图像: {filename},文件大小: {os.path.getsize(filename) / 1024:.2f} KB")
break
quality -= 5 # 降低质量
if quality < 10: # 如果质量低于10,停止尝试
print(f"无法将图像压缩到100KB以下,当前质量: {quality}")
break
# 主处理函数
def main():
# 用户需要替换以下路径为他们的Windows图片文件夹路径
pictures_folder = r'YOUR_PICTURES_FOLDER_PATH_HERE' # 示例:r'C:\Users\YourUsername\Pictures'
if not os.path.exists(pictures_folder):
os.makedirs(pictures_folder)
# 使用手动输入的 prompt
if prompt:
result = generate_image(prompt)
if result and "images" in result:
image_url = result["images"][0]["url"]
filename = prompt.split(',')[0].replace('/', '_').replace('\\', '_') + '.jpg'
file_path = os.path.join(pictures_folder, filename)
# 保存图像
save_image(image_url, file_path)
if __name__ == "__main__":
main()
3.1 修改脚本中的占位符
- API密钥文件路径: 将
YOUR_API_KEY_FILE_PATH_HERE
替换为您的API密钥文件路径,例如:r'D:\siliconflow\api.txt'
。 - 生成图像提示: 根据您的需求修改
prompt
变量,以定义生成图像的文本描述。 - 保存图像文件夹路径: 将
YOUR_PICTURES_FOLDER_PATH_HERE
替换为您希望保存生成图像的文件夹路径,例如:r'C:\Users\YourUsername\Pictures'
。
3.2 运行脚本
确保脚本配置正确后,您可以在命令行中运行它:
python your_script_name.py
(请将 your_script_name.py
替换为您保存的脚本文件名)
4. 注意事项
- 确保您的API密钥有效,并且您有权使用该API。
- 检查您的网络连接,确保脚本可以正常访问API。
- 如果出现错误消息,仔细查看输出,可能是由于API调用参数或网络问题导致的。
5. 支持模型
1. Stability AI – Stable Diffusion 3.5 Large
- 版本: 3.5
- 介绍: Stable Diffusion 3.5 Large是Stability AI推出的一种生成模型,专注于文本到图像的转换,它使用了增强的生成能力和更高的图像质量,适用于高分辨率图像生成和艺术创作。该模型具备更好的细节保留能力和更强的风格适应性。
2. Black Forest Labs – FLUX.1 Schnelle
- 版本: 1
- 介绍: FLUX.1 Schnelle是由Black Forest Labs开发的模型,专为快速生成高质量图像而设计,该模型在速度和质量之间取得了平衡,非常适合需要快速反馈的应用,如概念艺术和快速原型设计。
3. ByteDance – SDXL Lightning
- 版本: XL
- 介绍: SDXL Lightning是ByteDance推出的一个大型生成模型,旨在实现更高效的图像生成,该模型具有较大的参数量和更复杂的生成结构,能够处理更复杂的文本提示,生成细腻且富有创意的图像。
4. Stability AI – Stable Diffusion 2.1
- 版本: 2.1
- 介绍: Stable Diffusion 2.1是早期版本的Stable Diffusion模型,尽管版本较早,但它依然是一款广泛使用的生成模型,具备强大的图像合成能力,适合生成各种风格的图像,适合开发和实验性项目。
5. Tencent ARC – PhotoMaker
- 版本: 未指定
- 介绍: PhotoMaker是腾讯ARC团队开发的一款图像生成模型,专注于将照片转换为艺术风格图像。该模型支持多种风格和效果,允许用户在创作中灵活选择不同的视觉表现。
这些模型各具特色,支持用户在不同应用场景下进行图像生成。无论是需要高质量细节的艺术创作,还是快速生成概念图,这些模型都能提供有效的解决方案。选择合适的模型可以帮助用户更好地实现其创作目标。
Comments
Post a Comment