DALLI-E 모델 설명 참조
https://yongeekd01.tistory.com/144
1.1 이미지 수정
1.1.1 API 설명
기능 :
원본 이미지와 마스크 이미지, 프롬프트가 주어지면 편집된 이미지 또는 확장된 이미지를 생성
사용법 :
Request
client.images.edit(
image=open("otter.png", "rb"),
mask=open("mask.png", "rb"),
prompt="A cute baby sea otter wearing a beret",
n=2,
size="1024x1024"
)
Response
{
"created": 1589478378,
"data": [
{
"url": "https://..."
},
{
"url": "https://..."
}
]
}
파라메터 :
- image : 수정할 이미지. 4MB 미만의 정사각형 PNG 파일. 마스크를 제공하지 않으면 이미지에 투명도가 있어야 하며, 이 투명도가 마스크로 사용됨
- prompt : 원하는 이미지에 대한 텍스트 설명입니다. 최대 길이는 1000자
- mask : 완전히 투명한 영역(예: 알파가 0인 경우)이 이미지를 편집할 위치를 나타내는 추가 이미지. 4MB 미만의 PNG 파일. 이미지와 크기 동일
1.1.2 입력 이미지 수정해보기 (MASK 이미지 이용)
원본 이미지와 동일한 크기의 이미지의 일부를 mask (png 투명 레이어 이용) 하여 입력으로 사용
프롬프트는 현재 한글이 지원되지 않고 있는것같음. 이상하게 표시됨
from openai import OpenAI
client = OpenAI()
#현재 영문 prompt만 지원된다.
#원본은 alpha가 없어도 되지만 mask는 alpha를 포함하여야한다.
response = client.images.edit(
model="dall-e-2",
image=open("dog.png", "rb"),
mask=open("dog_mask.png", "rb"),
prompt="The dog is wearing a large cowboy hat",
n=1,
size="1024x1024"
)
image_url = response.data[0].url
print(image_url)
import requests
save_path = "dog_editing.png"
response = requests.get(image_url, stream=True)
if response.status_code == 200:
with open(save_path, 'wb') as file:
for chunk in response.iter_content(chunk_size=128):
file.write(chunk)
print(f"이미지 다운로드 완료: {save_path}")
else:
print(f"이미지 다운로드 실패. HTTP 상태 코드: {response.status_code}")
#생성된 이미지
2.1 이미지 변형(variation)
2.1.1 API 설명
기능 :
주어진 이미지를 유사하게 변형ㅋ`
사용법 :
Request
response = client.images.create_variation(
image=open("image_edit_original.png", "rb"),
n=2,
size="1024x1024"
)
Response
{
"created": 1589478378,
"data": [
{
"url": "https://..."
},
{
"url": "https://..."
}
]
}
파라메터 :
2.1.2 입력 이미지를 이용하여 여러가지로 변형 해보기
3개의 변형 이미지를 생성 (n=3)
from openai import OpenAI
client = OpenAI()
#주어진 이미지를 3개로 변형해본다.
response = client.images.create_variation(
model="dall-e-2",
image=open("dog.png", "rb"),
n=3,
size="1024x1024"
)
import requests
#이미지 저장
for n, data in enumerate(response.data) :
print(data.url)
save_path = f"dog_variation_{n}.png"
response = requests.get(data.url, stream=True)
if response.status_code == 200:
with open(save_path, 'wb') as file:
for chunk in response.iter_content(chunk_size=128):
file.write(chunk)
print(f"이미지 다운로드 완료: {save_path}")
else:
print(f"이미지 다운로드 실패. HTTP 상태 코드: {response.status_code}")
'IT > 개발' 카테고리의 다른 글
파이썬에서 ffmpeg 사용하기(ffmpeg-python, 각종 예제) (0) | 2024.02.21 |
---|---|
chatGPT-4를 이용한 이미지 해석(Image Description, gpt-4-vision) (0) | 2023.11.28 |
chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초 (0) | 2023.11.28 |
OpenAI Audio API를 이용한 STT 구현 기초(whisper-1, transcription, English translation) (0) | 2023.11.28 |
OpenAI Audio API를 이용한 TTS 구현 기초(tts-1, tts-1-hd) (0) | 2023.11.28 |