九、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.pswp.cn/web/15134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15134.shtml
英文地址,請注明出處:http://en.pswp.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日在奧地利維也納舉行 🌟【緊跟前沿】“時空探索之旅”與你一起探索時空奧秘!🚀 歡迎大家關注時空探索之旅 …

【數據結構與算法 | 基礎篇】數組模擬棧

1. 前言 前文我們剛提及了如何用單向鏈表來模擬棧. 我們還可以用數組來模擬棧.使用棧頂指針top來進行棧頂的操作. 2. 數組模擬棧 (1). 棧接口 public interface stack<E> {//壓棧boolean push(E value);//彈棧, 棧非空返回棧頂元素E pop();//返回棧頂元素, 但不彈棧E…

IntelliJ IDEA常用快捷鍵 + 動圖演示!

本文參考了 IntelliJ IDEA 的官網&#xff0c;列舉了IntelliJ IDEA &#xff08;Windows 版&#xff09; 的所有快捷鍵。并在此基礎上&#xff0c;為 90% 以上的快捷鍵提供了動圖演示&#xff0c;能夠直觀的看到操作效果。 該快捷鍵共分 11 種&#xff0c;可以方便的按各類查找…

【通義千問—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提取某一列的唯一值

點擊【篩選】&#xff08;【高級篩選】&#xff09;&#xff0c;參數里&#xff1a; 列表區域&#xff1a;為需要選擇唯一值的那一列復制到&#xff1a;生成唯一值的目標區域 據說新版本的excel有了unique()函數&#xff0c;可以很快捷的選擇某一列的唯一值&#xff0c;但是博…

儀器校準中移液器的使用規范,應當注意哪些細節?

校準行業中&#xff0c;移液器的使用是非常多的&#xff0c;尤其是理化室&#xff0c;經常需要借助到移液器來校準。作為常規的溶液定量轉移器具&#xff0c;其在校準過程中的使用也需要遵守規范&#xff0c;既是保證校準結果準確低誤差&#xff0c;也是為了規范實驗室校準人員…

類與對象:接口

一.概念 接口&#xff08;英文&#xff1a;Interface&#xff09;&#xff0c;在JAVA編程語言中是一個抽象類型&#xff0c;是抽象方法的集合&#xff0c;接口通常以interface來聲明。 二.語法規則 與定義類相似&#xff0c;使用interface關鍵詞。 Idea可以在開始時直接創建…

高德地圖PlaceSearch標記點清除

在開發過程中發現引入 AMap.PlaceSearch 插件之后 增加map屬性之后&#xff0c;地圖上會出現自帶的marker點&#xff0c; 這時通過 searchNearBy()成員方法獲取到的地點值含有省市區等詳細信息 但是將map屬性注釋掉之后 發現不返回省市區&#xff0c;但是又不想關聯上展示mar…

動靜態庫

說明&#xff1a;使用動靜態庫&#xff0c;一般直接安裝即可&#xff0c;其他使用方法了解即可 靜態庫 靜態庫&#xff08;Static Library&#xff09;是一種將代碼和數據打包成一個單獨的文件的庫文件&#xff0c;主要用于編譯時的鏈接&#xff0c;而不是運行時。靜態庫通常…

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這個類&#xff0c;它的一個核心作用之后呢&#xff1f;那下面我有一個問題想問問各位。作為mappedstatement來講&#xff0c;它封裝的是一個select標簽或者insert標簽。但是呢&#xff0c;我們需要大家注意的是什么&am…

社交媒體數據恢復:soma messenger

步驟1&#xff1a;檢查備份文件 首先&#xff0c;我們需要確認您是否已開啟Soma Messenger的自動備份功能。若已開啟&#xff0c;您可以在備份文件中找到丟失的數據。 步驟2&#xff1a;清除緩存并重啟應用 有時候&#xff0c;清除Soma Messenger的緩存文件可以幫助恢復丟失的…

為什么股票市場里有認賊為父的現象?

文章大綱&#xff1a;&#xff08;本文2648字&#xff0c;完整版本應該3500以上&#xff0c;耗時一個鐘&#xff09; 1、前言&#xff1a;邏輯與博弈 2、直覺引入博弈焦點 3、上周4-5的市場博弈視角 4、下周一視角能看到的東西 5、視角背后看到的情緒周期市場共識下的博弈…

請說說 Java中 static 修飾符是干啥的?

好的,面試官. static英文含義是靜態的,也就是在修飾成員(對象,方法,代碼塊,變量)時,表明他們都是屬于靜態成員 其次被修飾的成員有幾大特性: 1.一個被static修飾的靜態成員不再屬于實例出來的對象,而是只屬于這個類自己. 2.訪問static修飾的成員要通過類名訪問,在類加載時初…

特殊變量筆記

執行demo4.sh文件,輸入輸出參數itcast itheima的2個輸入參數, 觀察效果 特殊變量&#xff1a;$# 語法 $#含義 獲取所有輸入參數的個數 案例需求 在demo4.sh中輸出輸入參數個數 演示 編輯demo4.sh, 輸出輸入參數個數 執行demo4.sh傳入參數itcast, itheima, 播仔 看效果…

銷量翻倍不是夢!亞馬遜速賣通自養號測評實戰技巧分享!

在亞馬遜、速賣通這些跨境電商平臺上&#xff0c;賣家們都在想各種辦法讓自己的產品賣得更好。現在&#xff0c;有一種叫做“自養號測評”的方法特別火。簡單來說&#xff0c;就是自己養一些買家賬號&#xff0c;然后讓這些賬號來給你的產品寫好評。這樣&#xff0c;你的產品就…

Java的反射機制以及使用場景

Java的反射機制以及使用場景 什么是反射Class對象如何使用獲取 Class 類對象反射創造對象反射獲取類的構造器反射獲取類的成員變量反射獲取類的方法 反射的應用場景JDBC 的數據庫的連接Spring 框架的使用 什么是反射 Oracle 官方對反射的解釋 Reflection is commonly used by p…

從零自制docker-14-【實現 mydocker commit 打包容器成鏡像】

文章目錄 目標注意exec.Commandtar代碼結果 目標 piveroot切換工作目錄到/merged后&#xff0c;通過docker commit將此時工作目錄的文件系統保存下來&#xff0c;使用tar包將該文件系統打包為tar文件 命令類似 ./mydocker commit myimage然后當前目錄下會得到myimage.tar 注意…