下面代码展示了如何使用百度智能云的文心工作室 API 来生成图像。这个 API 允许用户根据文本提示生成图像,是人工智能领域中的一项先进技术。这段代码非常适合于那些希望在自己的项目中集成图像生成功能的开发者。
import requests
import json
import base64
import json
import requests
from PIL import Image
import io
# 调用时无需计费,单个账号提供500张图片额度。额度用尽后,可以提交工单说明应用场景、预计月调用量,申请扩充额度
# https://console.bce.baidu.com/qianfan/chargemanage/list
api_key = ''
secret_key = ''
def get_access_token(api_key, secret_key):
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {
"grant_type": "client_credentials",
"client_id": api_key,
"client_secret": secret_key
}
response = requests.post(url, params=params)
return response.json().get("access_token")
# 参数分别是提示词、反向提示词、图片尺寸、生成步数、生成数量
def generate_images(prompt, negative_prompt, size, steps, n):
access_token = get_access_token(api_key, secret_key)
url = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/text2image/sd_xl?access_token={access_token}"
payload = json.dumps({
"prompt": prompt,
"negative_prompt": negative_prompt,
"size": size,
"steps": steps,
"n": n,
"sampler_index": "DPM++ SDE Karras"
})
headers = {'Content-Type': 'application/json'}
response = requests.request("POST", url, headers=headers, data=payload)
response_data = response.json()
for index, image_data in enumerate(response_data['data']):
image_base64 = image_data['b64_image']
image_bytes = base64.b64decode(image_base64)
image = Image.open(io.BytesIO(image_bytes))
image_path = f"D:\\wenjian\\临时\\image_{index + 1}.png"
image.save(image_path)
print(f"图片 {index + 1} 已保存至 {image_path}")
# 使用示例
if __name__ == '__main__':
# 参数分别是提示词(英文)、反向提示词(英文)、图片尺寸、生成步数、生成数量
generate_images( "dog", "white", "1024x1024", 20, 2)
代码解析
- 导入所需库: 使用requests处理HTTP请求,json用于处理JSON数据,base64用于编解码图像数据,PIL.Image和io用于处理图像。
- 获取访问令牌: get_access_token(api_key, secret_key): 通过提供API密钥和密钥,从百度智能云获取访问令牌。
- 生成图像: generate_images(prompt, negative_prompt, size, steps, n): 使用文心工作室API生成图像。接受提示词、反向提示词、图像尺寸、生成步骤和生成数量作为参数。 使用POST请求调用API,传递JSON格式的参数。 接收响应,并将Base64编码的图像数据转换成图像文件,保存到指定路径。
代码的实际应用
这段代码对于那些需要在应用程序中生成图像的开发者来说非常有用。例如:
- 社交媒体内容生成:自动创建根据特定主题或趋势生成的图像。
- 艺术和设计:生成独特的艺术作品或设计元素。
- 游戏和娱乐:为游戏或其他娱乐内容生成定制化的图像。
应用场景
- 内容创作:为博客、网站或广告创建视觉内容。
- 用户交互:在响应用户输入或查询时生成定制化图像。