(DALL·E) OpenAI DALL·E 3로 원하는 이미지를 자동 생성하는 파이썬 코드 실습
OpenAI DALL·E 3로 원하는 이미지를 자동 생성하는 파이썬 코드 실습
1. 소개
이번 글에서는 OpenAI의 DALL·E 3 API를 파이썬에서 직접 호출하여 내가 원하는 **프롬프트(텍스트 설명)**만 입력하면 AI가 이미지를 생성하고, 자동으로 내 PC에 저장하는 코드를 다뤄봅니다.
- ✅ 실습 예시:
"a white siamese cat"
프롬프트로 고양이 이미지를 생성해봄 - ✅ 환경 변수로 API 키 관리
- ✅ 이미지 생성, 다운로드, 저장까지 전 과정 자동화
2. 코드 전체 구조
2.1 환경 준비 및 API 키 설정
import os
import requests
from openai import OpenAI
import openai
import warnings
warnings.filterwarnings("ignore", category=UserWarning)
from dotenv import load_dotenv # .env 파일에서 환경 변수 읽기
# .env 파일에서 OPENAI_API_KEY 가져오기
load_dotenv(dotenv_path='openapi_key.env')
api_key = os.getenv("OPENAI_API_KEY")
openai.api_key = api_key
# OpenAI 클라이언트 객체 생성
client = OpenAI()
- dotenv 패키지로
.env
파일에서OPENAI_API_KEY
를 읽어옴 - 보안상 API 키를 코드에 직접 쓰지 않고, 환경 변수로 관리
OpenAI()
객체 생성(최신 openai 패키지 기준)
2.2 이미지 생성 함수
def generate_image(prompt, output_path='genimage.jpg', size='1024x1024', quality='standard'):
"""DALL·E 3로 이미지 생성 및 저장"""
print(f"🖼️ '{prompt}' 프롬프트로 이미지 생성 중...")
response = client.images.generate(
model='dall-e-3',
prompt=prompt,
size=size,
quality=quality,
n=1
)
# 이미지 URL 추출 및 다운로드
image_url = response.data[0].url
print(f"✅ 이미지 URL:\n{image_url}")
image_data = requests.get(image_url).content
with open(output_path, 'wb') as fp:
fp.write(image_data)
print(f"📁 이미지가 '{output_path}'에 저장되었습니다.")
- 프롬프트만 입력하면 DALL·E 3가 이미지를 생성해줌
- 생성 결과는 URL 형태로 오며, 직접 다운로드하여 파일로 저장
2.3 메인 실행부
if __name__ == "__main__":
prompt = "a white siamese cat" # 원하는 이미지 설명
output_file = "genimage.jpg" # 저장 파일명
generate_image(prompt, output_file)
- 코드 실행 시
"a white siamese cat"
프롬프트로 이미지를 만들어genimage.jpg
로 저장 - 다른 프롬프트, 파일명, 이미지 크기도 자유롭게 변경 가능
3. 사용법 및 실습 팁
-
OpenAI API 키 발급
- OpenAI 홈페이지에서 발급
-
.env
파일에 아래처럼 저장OPENAI_API_KEY=sk-xxxxxx...
-
필요 패키지 설치
pip install openai requests python-dotenv
-
프롬프트만 바꿔서 다양한 이미지 생성
"A futuristic city skyline at sunset"
"A cartoon dog riding a skateboard"
- 자신만의 프롬프트로 무한한 이미지를 생성 가능
4. 마치며
이 코드를 활용하면 복잡한 UI/웹 없이도, 프롬프트 한 줄로 AI가 이미지를 생성하고 자동 저장까지 할 수 있습니다.
- 블로그 썸네일, 발표 자료, 아이디어 스케치 등 빠르게 이미지가 필요할 때 적극 추천하는 방법입니다!
댓글남기기