본문 바로가기
인공지능/생성형 AI

[생성형 AI] OpenAI 이미지 생성 활용(w/DALL·E 3)

by 클레어몬트 2025. 2. 17.

 

 

이미지 생성 절차

  1. dall-e-3 모델을 사용하여 이미지를 생성한다
  2. prompt에 원하는 이미지 설명을 입력한다
  3. 생성된 이미지의 URL을 출력하여 확인한다
import openai

client = openai.OpenAI()

easy_prompt = """A detailed image of a small orange tabby cat staring at its reflection in an ornate, vintage mirror. The reflection shows a majestic lion, symbolizing confidence and inner strength."""

response = client.images.generate(
    model="dall-e-3",
    prompt=easy_prompt,
    size="1024x1024",
)

image_link = response.data[0].url
print(image_link)
 

※ 이미지 프롬프트 수정 (revised_prompt)

DALL-E 3는 사용자의 프롬프트를 더 자세하게 수정하는 기능을 제공한다. 이는 보다 정밀한 이미지 생성을 돕는다!

revised_prompt = response.data[0].revised_prompt
print(revised_prompt)
  • 프롬프트를 보다 구체적으로 다듬어 보다 정교한 이미지를 생성할 수 있음
  • AI가 추천하는 세부 묘사를 활용하여 더욱 생생한 결과물을 얻을 수 있음
 

이미지 출력

from IPython.display import Image
import requests

img = Image(url=image_link)
response = requests.get(image_link)

with open('generated_image.png', 'wb') as file:
    file.write(response.content)

img

 

  1. 생성된 이미지의 URL을 이용하여 이미지를 출력한다
  2. requests 라이브러리를 활용하여 이미지를 다운로드하여 저장한다
 

이미지 프롬프트 전달하기

OpenAI API에서는 기존의 이미지 파일을 함께 전달하여 AI가 이를 분석하고 반응하도록 할 수도 있다

 

(이미지 URL 전달)

messages = [
    {"role": "user", "content": [
        {"type": "text", "text": "이 그림을 묘사하고, 일반적인 그림과 비교해서 특이한 점을 언급하세요."},
        {"type": "image_url", "image_url": {"url": image_link}},
    ]}
]

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    max_tokens=1024,
)

print(response.choices[0].message.content)
  1. 사용자의 질문과 함께 이미지를 OpenAI API에 전달한다
  2. AI가 이미지를 분석한 후, 특이한 점을 언급하며 묘사한다
 

오프라인 이미지 base64 인코딩하여 전달

기존 로컬 이미지를 base64로 변환하여 OpenAI API에 전달할 수도 있다

import base64

def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')

image_path = "generated_image.png"
base64_image = encode_image(image_path)

messages = [
    {"role": "user", "content": [
        {"type": "text", "text": "이 그림을 전시회에서 소개한다고 생각하고, 즐겁고 유쾌하게, 유머를 섞어 홍보하세요"},
        {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}},
    ]}
]

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    max_tokens=1024,
)

print(response.choices[0].message.content)

 

  1. 로컬 이미지를 base64로 변환하여 AI에 전달한다
  2. AI가 이미지와 함께 제공된 요청에 맞춰 응답을 생성한다
  3. 예제에서는 전시회에서 유쾌하게 홍보하는 방식으로 설명을 요청하였다