Python 调用API在本地生成图像

概述

本程序利用硅基流动目前的免费 stabilityai/stable-diffusion-2-1 模型API,生成图像并下载到本地,用户可以通过输入描述性提示词来获取相应的图像。使用Python编写,依赖于​​requests​​​库进行HTTP请求,并使用​​os​​库处理文件系统操作。

功能

  • 用户输入:程序提示用户输入描述图像的提示词,用户输入时要添加单引号。
  • API请求:使用用户输入的提示词构建请求负载,并向指定的API发送POST请求以生成图像。
  • 响应处理:解析API的响应,提取生成的图像URL。
  • 文件保存:将生成的图像下载并保存到本地文件系统,文件名基于用户输入的前10个字符命名。
  • 目录管理:在保存图像之前,检查并创建必要的目录。

代码结构
以下是应用程序的主要代码结构:

# -*- coding: utf-8 -*-
import requests
import os

url = "https://api.siliconflow.cn/v1/images/generations"

# 提示用户输入描述图片的提示词
try:
    user_input = input("\n请输入描述图片的提示词,例如:'blue sky': ").strip()  # 用户输入不需要引号
    user_prompt = "'{}'".format(user_input)  # 自动为输入添加单引号
except Exception as e:
    print("输入提示词时发生错误: {}".format(e))
    exit(1)  # 退出程序

payload = {
    "model": "deepseek-ai/Janus-Pro-7B",
    "prompt": user_prompt,  # 使用用户输入的提示词
    "seed": 4999999999
}
headers = {
    "Authorization": "Bearer <token>",  #<token> 替换成你在硅基流动里的 API-KEY
    "Content-Type": "application/json"
}

response = requests.request("POST", url, json=payload, headers=headers)

# 解析响应以获取图像URL
response_json = response.json()  # 使用 json() 方法解析响应
image_url = response_json['data'][0]['url']  # 从 data 数组中获取 URL

# 定义保存图像的本地文件名
local_filename = os.path.join("images", "{}.png".format(user_input[:10]))  # 使用用户输入的前10个字符命名

# 创建图像目录(如果不存在)
if not os.path.exists(os.path.dirname(local_filename)):
    os.makedirs(os.path.dirname(local_filename))

# 下载图像并保存到本地
with requests.get(image_url, stream=True) as img_response:
    img_response.raise_for_status()  # 检查请求错误
    with open(local_filename, 'wb') as f:
        for chunk in img_response.iter_content(chunk_size=8192):
            f.write(chunk)

print("Image saved to {local_filename}")

关键技术

  • HTTP请求:使用requests库简化HTTP请求的发送和响应处理。
  • JSON解析:通过response.json()方法轻松解析API返回的JSON数据。
    -文件操作:使用os库处理文件路径和目录创建,确保图像能够正确保存。

总结

本应用程序展示了如何通过API生成图像,并将其保存到本地。用户友好的输入提示和自动化的文件管理使得该应用程序易于使用,适合需要快速生成图像的场景。

示例
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

<think>好的,用户想了解如何通过Python调用豆包大模型的API生成图像。首先,我需要确认豆包大模型是否支持图像生成功能。根据提供的引用内容,引用[1]、[2]、[3]、[5]提到的主要是文本相关的API调用,比如聊天补全和函数调用,但未明确提到图像生成。引用[4]中的代码使用了OpenAI的SDK,可能与豆包API的兼容性有关,但同样没有涉及图像生成。 接下来,我需要检查豆包官方文档是否支持图像生成。根据引用[5],豆包的官方文档提到了两种授权方式,但只展示了文本生成的示例。可能当前豆包API主要面向文本处理,图像生成可能不在现有服务范围内,或者需要其他特定的接口。 用户可能需要确认豆包API是否有图像生成的功能。如果官方文档没有说明,可能需要联系技术支持或查阅更新日志。假设目前不支持,可以建议用户关注官方更新,或者推荐使用其他支持图像生成API,如DALL-E或Stable Diffusion,并指导如何集成这些服务。 另外,引用[3]提到豆包模型的价格优势,但未提及其他功能。如果用户确实需要图像生成,可能需要结合其他服务。同时,引用[2]和[5]中的Python SDK安装和HTTP请求方法可能对用户有帮助,如果未来豆包支持图像生成,可以基于这些方法进行调用。 最后,需要确保回答准确,不误导用户。应明确说明当前可能不支持,并提供替代方案,同时指导如何查阅官方文档获取最新信息。</think>根据现有资料,目前豆包大模型API主要面向文本生成任务(如对话、补全、函数调用),暂时未发现官方提供图像生成接口的说明[^1][^3][^5]。以下是分步骤说明及建议: **第一步:确认当前API能力** 通过官方文档可见,豆包API当前核心能力聚焦于: ``` 文本生成(如对话补全) 函数调用 长上下文处理 ``` 并未提及图像生成功能[^1] **第二步:替代方案建议** 若需要图像生成能力,可考虑以下两种方式: 1. **组合调用方案** 使用豆包API生成文本描述 + 其他图像生成API(如DALL-E): ```python # 伪代码示例 from doubao_api import generate_text # 假设的文本生成接口 from dalle_api import generate_image # 假设的图像生成接口 prompt = "一只穿着宇航服的柴犬" description = generate_text(f"详细描述这个场景:{prompt}") image = generate_image(description) ``` 2. **关注官方更新** 定期查看[豆包开发者平台](https://www.volcengine.com/docs/8239),近期更新可能新增功能 **第三步:文本生成API调用准备** 若需测试现有API,配置步骤如下: 1. 安装SDK ```bash pip install volcengine-python-sdk # 官方SDK[^2] ``` 2. 基础调用示例(文本生成) ```python from volcengine.maas.v2 import MaasService maas = MaasService('maas-api.ml-platform-cn-beijing.volces.com', 'cn-beijing') req = { "model": { "name": "doubao-lite-8k" # 模型名称 }, "messages": [{ "role": "user", "content": "写一首关于秋天的诗" }] } resp = maas.chat(req) # 实际调用需添加认证参数 print(resp.choice.message.content) ``` **第四步:图像功能建议** 可通过官方渠道提交功能请求: - 开发者控制台的「需求反馈」入口 - 通过[email protected]联系技术支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山语山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值