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

news2024/12/24 21:33:21

学习用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.coloradmin.cn/o/1693569.html

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

相关文章

2024洗地机哪个牌子好?洗地机十大品牌

洗地机在不同家庭环境中都能发挥其独特的优势,无论是大面积的地板还是狭小的角落,都能轻松应对。 对于有孩子或宠物的家庭,地面上经常会有各种杂物和污渍,洗地机强大的吸力和深度清洁功能,可以迅速清理掉这些脏东西&a…

嵩山为什么称为三水之源

三水指黄河、淮河、济河,这三条河流环绕在嵩山周边。 黄河横亘在嵩山北部,其支流伊洛河从西南方环绕嵩山,然后汇入黄河。济河,古称济水,源自济源王屋山,自身河道在东晋时代被黄河夺占,从此消失。…

C#_库的引用

类库的引用 还可以自己引用类库:解决方案-添加-新建项目 主程序 using System; using System.Windows.Forms; using Tools;namespace ConsoleApp2 {class Program{static void Main(string[] args){//Console.WriteLine("helloword");// Form form ne…

“腾讯云 AI 代码助手”体验

一、“腾讯云 AI 代码助手”体验 1、注册账号并进行实名认证 2、进入开发环境 3、体验javascript简单函数 代码如下: //请写一个两个日期计算的函数 function dateDiff(date1, date2) {return date2.getTime() - date1.getTime(); } var date1 new Date("2…

基于JAVA GUI体育馆管理系统的会员功能

Java GUI即Java图形用户界面,是一种使用图形化元素(如窗口、按钮、文本框等)来构建用户界面的技术。它基于Java的Swing框架,可以用于创建各种复杂的用户界面,包括窗口、对话框、菜单、按钮、文本框、复选框、下拉列表等…

安卓实现5个底部导航栏切换fragment

步骤,写 5 个 fragment 自定义的类5个布局文件: package com.xmkjsoft.xhgh.fragment;import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;import androidx.annotation.NonNul…

焦化超低排平台选哪家好?(已解答)

在环保政策日益严格的背景下,焦化行业的超低排放改造成为企业转型升级的必经之路。朗观视觉小编建议,选择合适的焦化超低排平台对于确保改造效果和实现可持续发展具有重要意义。本文将从多个维度为您提供一份全面的评估与选择指南,帮助您在众…

Python_文件操作_学习

目录 一、关于文件的打开和关闭 1. 文件的打开 2.文件的关闭 二、文件的读取 1. 文件的读_r 2. 使用readline 3.使用readlines 三、文件的写入 1. 文本的新建写入 2.文本的追加写入 四、文件的删除和重命名 1.文件的重命名 2.文件的删除 五、文件的定位读写 1.t…

java: 无法访问org.springframework.ldap.core.LdapTemplate

完整错误: java: 无法访问org.springframework.ldap.core.LdapTemplate错误的类文件: /E:/apache-maven-3.6.3/repository/org/springframework/ldap/spring-ldap-core/3.2.3/spring-ldap-core-3.2.3.jar!/org/springframework/ldap/core/LdapTemplate.class类文件具…

微火问答:全域外卖和本地生活服务是同个项目吗?

当前,本地生活赛道火爆程度不断升级,作为其主要板块之一的团购外卖也持续迸发出新的活力。而全域运营的出现无疑是给团购外卖这把正在熊熊燃烧的烈火,又添了一把新柴! 所谓全域运营,简单来说,就是指所有领…

英语学习笔记25——Mrs. Smith‘s kitchen

Mrs. Smith’s kitchen 史密斯太太的厨房 词汇 Vocabulary Mrs. 夫人【已婚】 复习:Mr. 先生 全名 / 姓    Mrs. 夫人 全名 / 丈夫的姓    Miss 小姐(未婚) 全名 / 姓    Ms. 女士 全名 / 姓 查看婚姻状况,可以观察…

【从C++到Java一周速成】章节13:多线程

章节13:多线程 【1】程序、进程、线程【2】创建线程 【1】程序、进程、线程 程序:是为了完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。进程:是程序的一次执行过程。正在运行的一个程序,进程作为资…

如何找到docker的run(启动命令)

使用python三方库进行 需要安装python解释器 安装runlike安装包 pip3 install runlike 运行命令 runlike -p <container_name> # 后面可以是容器名和容器id&#xff0c;-p参数是显示自动换行实验 使用docker启动一个jenkins 启动命令为 docker run -d \ -p 9002:80…

初学者都能掌握的操作符(中)

&#xff08;1&#xff09;位操作符&#xff08;& | ^&#xff09; &&#xff1a;&#xff08;按二进制位“与”&#xff09; 也就是两个数的每一位二进制数按照 “与” 的算法&#xff0c;如下&#xff1a; int a 3 ,b 5 ; c a & b; 我们首先写出a和b的二进…

@JsonFormat注解出现日期序列化以及反序列化问题(日期比实际日期少一天)

文章目录 前言一、场景如下所示二、问题分析三、JsonFormat注解是什么以下是 JsonFormat 注解的一些常用属性&#xff1a; 四、解决问题解决方式&#xff1a;只需要指定对应的时区就好效果如下&#xff1a; 五、JsonFormat 注解时出现日期问题总结 前言 在一次的偶然机会下发现…

jmeter服务器性能监控分析工具ServerAgent教程

ServerAgent介绍&#xff1a;支持监控CPU&#xff0c;memory&#xff0c;磁盘&#xff0c;网络等&#xff0c;和JMeter集成&#xff0c;在JMeter的图形界面中&#xff0c;可以实时看到监控的数据&#xff0c;但是&#xff0c;它只能监控硬件资源使用情况。 不能监控应用服务 S…

【正点原子Linux连载】 第四十六章 M.2硬盘驱动实验摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DLRK3568开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第四十…

数据结构:二叉树与树

一 树的基本概念&#xff1a; 1.树的形状&#xff1a; 2.树的定义&#xff1a; 树是一种非线性的数据结构&#xff0c;它是n(n > 0)个结点的有限集。当n 0时&#xff0c;称为空树。在任意一棵非空树中应满足&#xff1a; 2.1 有且仅有一个特定的称为根的结点。 2.2 当n …

Linux基础(五):常用基本命令

从本节开始&#xff0c;我们正式进入Linux的学习&#xff0c;通过前面的了解&#xff0c;我们知道我们要以命令的形式使用操作系统&#xff08;使用操作系统提供的各类命令&#xff0c;以获得字符反馈的形式去使用操作系统。&#xff09;&#xff0c;因此&#xff0c;我们是很有…