使用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密钥。访问以下链接进行注册:

Siliconflow 注册

注册后,您将获得每日免费生成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

Popular posts from this blog

LEGO City Car Wash 60362 Toy Set

GOLOZA Modern Arc-Designed Digital Alarm Clock with Blue LED Display

掌握5W1H公式,让文生图更精准!