九、OpenAI之图片生成(Image generation)

学习用DALL.E的API怎样生成和操作图片

1 介绍

图片API提供3个方法来和图片进行交互:

  1. 从0开始基于文字提示创建图片(DALL.E 3 and DALL.E2)
  2. 基于一个新的提示词,通过让模型替换已有图像的某些区域来创建图像的编辑版本;(DALL.E2)
  3. 对1个已有的图片创建多个变化的版本(DALL.E2)

本指南涵盖了使用这三个API端点的基础知识,并提供了有用的代码示例。要尝试DALL·e3,请转到ChatGPT。

2 使用

图片生成的端点允许你通过一个提示词创建一个原始的图片。使用DALL.E3可以创建图片的大小有:024x1024, 1024x1792 或 1792x1024 像素。
默认图片的生成为标准质量,但使用DALL.E3可以通过quality: ‘hd’ 来强化细节。标准质量的图片生成速度是最快的,
你可能使用DALL.E3一次请求一个图片,或使用DALL.E2一次请求10个图片,通过设置n参数。

from openai import OpenAI
client = OpenAI()response = client.images.generate(model="dall-e-3",prompt="a white siamese cat",size="1024x1024",quality="standard",n=1,
)image_url = response.data[0].url

3 提示词

对于发布的DALL.E3为了安全模型采用默认的提示词和自动重写功能,并加入了一些细节(更详细的提示词会生成更高质量的图片)。
目前不可能屏蔽这个特性,为达到理想的图片你可以使用下面的提示词:I NEED to test how the tool works with extremely simple prompts. DO NOT add any detail, just use it AS-IS。在数据返回对象的revised_prompt字段中,可以查看更新的提示词。

4 DALL-E3生成案例

在这里插入图片描述
使用response_format参数,每个图像都可以作为URL或Base64数据返回。url将在一小时后过期

5 编辑(DALL-E2)

也被称为“inpainting”,图像编辑端点允许您通过上传图像和指示应该替换哪些区域的掩码来编辑或扩展图像。遮罩的透明区域表示应该编辑图像的位置,提示符应该描述完整的新图像,而不仅仅是擦除的区域。这个端点可以在ChatGPT Plus中实现DALL·E图像编辑等体验。

from openai import OpenAI
client = OpenAI()response = client.images.edit((model="dall-e-2",image=open("sunlit_lounge.png", "rb"),mask=open("mask.png", "rb"),prompt="A sunlit indoor lounge area with a pool containing a flamingo",n=1,size="1024x1024"
)
image_url = response.data[0].url

在这里插入图片描述
上传的图片和蒙版必须是大小小于4MB的正方形PNG图片,且尺寸必须相同。在生成输出时不使用遮罩的非透明区域,因此它们不一定需要像上面的例子那样与原始图像匹配。

6 变化(DALL-E2)

图像变化的端点允许你生成一个变化的图片

from openai import OpenAI
client = OpenAI()response = client.images.create_variation(model="dall-e-2",image=open("corgi_and_cat_paw.png", "rb"),n=1,size="1024x1024"
)image_url = response.data[0].url

在这里插入图片描述
与编辑端点类似,输入图像必须是大小小于4MB的正方形PNG图像。

6 内容审核

提示和图像根据我们的内容策略进行过滤,当提示或图像被标记时返回错误。
特定语言技巧:

  • 使用内存中的图片数据
    在上面的Python的案例中使用open读取磁盘上的数据。在其它一些案例中,你可以读取内存中的图片数据。下面是读取内存中字节流的API的例子:
from io import BytesIO
from openai import OpenAI
client = OpenAI()# This is the BytesIO object that contains your image data
byte_stream: BytesIO = [your image data]
byte_array = byte_stream.getvalue()
response = client.images.create_variation(image=byte_array,n=1,model="dall-e-2",size="1024x1024"
)
  • 操作图片数据
    在调用API之前你可以需要对图片进行处理,下面是使用PIL库调整图片大小的案例:
from io import BytesIO
from PIL import Image
from openai import OpenAI
client = OpenAI()# Read the image file from disk and resize it
image = Image.open("image.png")
width, height = 256, 256
image = image.resize((width, height))# Convert the image to a BytesIO object
byte_stream = BytesIO()
image.save(byte_stream, format='PNG')
byte_array = byte_stream.getvalue()response = client.images.create_variation(image=byte_array,n=1,model="dall-e-2",size="1024x1024"
)
  • 处理错误
    由于无效输入、速率限制或其他问题,API请求可能会返回错误。这些错误可以用try来处理。Except语句,错误详细信息可在e.error中找到
import openai
from openai import OpenAI
client = OpenAI()try:response = client.images.create_variation(image=open("image_edit_mask.png", "rb"),n=1,model="dall-e-2",size="1024x1024")print(response.data[0].url)
except openai.OpenAIError as e:print(e.http_status)print(e.error)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FPGA】Verilog:解码器 | 编码器 | 多路复用器(Mux, Multiplexer)

0x00 什么是解码器 解码器是根据输入信号在多个输出位中选择一个输出位的装置。例如,当解码器接收2位二进制值作为输入时,它可以接收00、01、10、11四种输入值,并根据每个输入值在4个输出位中选择一个,输出为1000、0100、0010、0001中的一种。这样的解码器被称为高电平有效…

ICML 2024 Mamba 论文总结

2024ICML(International Conference on Machine Learning,国际机器学习会议)在2024年7月21日-27日在奥地利维也纳举行 🌟【紧跟前沿】“时空探索之旅”与你一起探索时空奥秘!🚀 欢迎大家关注时空探索之旅 …

IntelliJ IDEA常用快捷键 + 动图演示!

本文参考了 IntelliJ IDEA 的官网,列举了IntelliJ IDEA (Windows 版) 的所有快捷键。并在此基础上,为 90% 以上的快捷键提供了动图演示,能够直观的看到操作效果。 该快捷键共分 11 种,可以方便的按各类查找…

【通义千问—Qwen-Agent系列2】案例分析(图像理解图文生成Agent||多模态助手|| 基于ReAct范式的数据分析Agent)

目录 前言一、快速开始1-1、介绍1-2、安装1-3、开发你自己的Agent 二、基于Qwen-Agent的案例分析2-0、环境安装2-1、图像理解&文本生成Agent2-2、 基于ReAct范式的数据分析Agent2-3、 多模态助手 附录1、agent源码2、router源码 总结 前言 Qwen-Agent是一个开发框架。开发…

Excel提取某一列的唯一值

点击【筛选】(【高级筛选】),参数里: 列表区域:为需要选择唯一值的那一列复制到:生成唯一值的目标区域 据说新版本的excel有了unique()函数,可以很快捷的选择某一列的唯一值,但是博…

仪器校准中移液器的使用规范,应当注意哪些细节?

校准行业中,移液器的使用是非常多的,尤其是理化室,经常需要借助到移液器来校准。作为常规的溶液定量转移器具,其在校准过程中的使用也需要遵守规范,既是保证校准结果准确低误差,也是为了规范实验室校准人员…

类与对象:接口

一.概念 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。 二.语法规则 与定义类相似,使用interface关键词。 Idea可以在开始时直接创建…

动静态库

说明:使用动静态库,一般直接安装即可,其他使用方法了解即可 静态库 静态库(Static Library)是一种将代码和数据打包成一个单独的文件的库文件,主要用于编译时的链接,而不是运行时。静态库通常…

Android Studio 所有历史版本下载

一、官网链接 https://developer.android.google.cn/studio/archive 操作 二、AndroidDevTools地址 https://www.androiddevtools.cn/ 参考 https://blog.csdn.net/qq_27623455/article/details/103008937

Mybatis源码剖析---第二讲

Mybatis源码剖析—第二讲 那我们在讲完了mappedstatement这个类,它的一个核心作用之后呢?那下面我有一个问题想问问各位。作为mappedstatement来讲,它封装的是一个select标签或者insert标签。但是呢,我们需要大家注意的是什么&am…

社交媒体数据恢复:soma messenger

步骤1:检查备份文件 首先,我们需要确认您是否已开启Soma Messenger的自动备份功能。若已开启,您可以在备份文件中找到丢失的数据。 步骤2:清除缓存并重启应用 有时候,清除Soma Messenger的缓存文件可以帮助恢复丢失的…

为什么股票市场里有认贼为父的现象?

文章大纲:(本文2648字,完整版本应该3500以上,耗时一个钟) 1、前言:逻辑与博弈 2、直觉引入博弈焦点 3、上周4-5的市场博弈视角 4、下周一视角能看到的东西 5、视角背后看到的情绪周期市场共识下的博弈…

特殊变量笔记

执行demo4.sh文件,输入输出参数itcast itheima的2个输入参数, 观察效果 特殊变量:$# 语法 $#含义 获取所有输入参数的个数 案例需求 在demo4.sh中输出输入参数个数 演示 编辑demo4.sh, 输出输入参数个数 执行demo4.sh传入参数itcast, itheima, 播仔 看效果…

销量翻倍不是梦!亚马逊速卖通自养号测评实战技巧分享!

在亚马逊、速卖通这些跨境电商平台上,卖家们都在想各种办法让自己的产品卖得更好。现在,有一种叫做“自养号测评”的方法特别火。简单来说,就是自己养一些买家账号,然后让这些账号来给你的产品写好评。这样,你的产品就…

Java的反射机制以及使用场景

Java的反射机制以及使用场景 什么是反射Class对象如何使用获取 Class 类对象反射创造对象反射获取类的构造器反射获取类的成员变量反射获取类的方法 反射的应用场景JDBC 的数据库的连接Spring 框架的使用 什么是反射 Oracle 官方对反射的解释 Reflection is commonly used by p…

从零自制docker-14-【实现 mydocker commit 打包容器成镜像】

文章目录 目标注意exec.Commandtar代码结果 目标 piveroot切换工作目录到/merged后,通过docker commit将此时工作目录的文件系统保存下来,使用tar包将该文件系统打包为tar文件 命令类似 ./mydocker commit myimage然后当前目录下会得到myimage.tar 注意…

「实用推荐」如何为桌面 移动跨平台应用选择UI框架/APP架构?

DevExpress .NET MAUI UI组件库提供了用于Android和iOS移动开发的高性能UI组件,该库包括数据网格、图表、日程、数据编辑器、CollectionView和选项卡组件。 获取DevExpress .NET MAUI最新正式版下载(Q技术交流:532598169) “一次编写&#…

ABB机器人---基础编程

目录 第一章 代码解释 1.1 基础代码 1.1.2 关于 VAR robtarget pos 1.1.3 关于四元数 1.2 机器人初始化程序 1.3 配置通信 (ProfiNet 示例,ABB RAPID) 1.4 设置干涉区 (ABB RAPID) 1.5 示教轨迹和自动过程 (ABB RAPID) 1.6 配置抓手并进行抓取操作 (ABB RA…

springboot错误

错误总结 1、使用IDEA 的 initialalzer显示2、IDEA 新建文件 没有 java class3、java: 错误: 不支持发行版本 22解决方法4、IDEA-SpringBoot项目yml配置文件不自动提示解决办法 1、使用IDEA 的 initialalzer显示 IDEA创建SpringBoot项目时出现:Initialization fail…