3억 장 규모의 이미지-텍스트 학습을 통해 사용자가 입력한 문장을 이해하고 새로운 이미지를 만드는 기능을 제공합니다. 사물, 배경, 조명, 구도, 스타일 조합의 문장 표현을 이해하고, 원하는 컨셉의 이미지를 빠르게 생성해 냅니다.
https://developers.kakao.com/console/app
# HTTP 요청, JSON 데이터 처리, URL 처리, 이미지 처리에 사용됩니다.
import requests
import json
import urllib
from PIL import Image
# [내 애플리케이션] > [앱 키] 에서 확인한 REST API 키 값 입력
REST_API_KEY = '개인_Rest_API_key'
# 이미지 생성하기 요청
#t2i'라는 이름의 함수를 정의합니다. 이 함수는 텍스트를 이미지로 변환하는 작업을 합니다. 함수는 두 개의 인자, 'prompt'와 'negative_prompt'를 받습니다.
def t2i(prompt, negative_prompt):
#requests 라이브러리를 사용하여 카카오 브레인의 Karlo API에 POST 요청을 보냅니다. 요청에는 위에서 정의한 API 키와 함께 주어진 프롬프트 정보를 JSON 형식으로 전달합니다.
r = requests.post(
'https://api.kakaobrain.com/v2/inference/karlo/t2i',
json={
'prompt': prompt,
'negative_prompt': negative_prompt
},
headers={
'Authorization': f'KakaoAK {REST_API_KEY}',
'Content-Type': 'application/json'
}
)
# HTTP status check
# API 호출의 HTTP 응답 상태를 확인합니다. 오류 상태(예: 404, 500)가 반환된 경우 예외를 발생시킵니다.
r.raise_for_status()
#API 호출의 응답을 JSON 형식으로 파싱하여 반환합니다.
return r.json()
# 프롬프트에 사용할 제시어
# 이미지 생성에 사용될 주제와 제외하려는 요소들을 문자열 변수에 지정합니다.
prompt = "Flying cars on the air"
negative_prompt = "bycycle, human, road"
# 이미지 생성하기 REST API 호출
# 앞서 정의한 't2i' 함수를 사용하여 이미지 생성 API를 호출하고 그 결과를 'response' 변수에 저장합니다.
response = t2i(prompt, negative_prompt)
# API 응답에서 "images" 키의 값을 확인합니다. 값이 없거나 유효하지 않으면 오류 메시지를 출력하고 프로그램을 종료합니다.
if not response.get("images"):
print("API did not return expected image data.")
exit()
# 응답된 이미지 데이터에서 첫 번째 이미지의 URL을 가져옵니다. URL이 없으면 오류 메시지를 출력하고 프로그램을 종료합니다.
image_url = response["images"][0].get("image")
if not image_url:
print("Image URL not found.")
exit()
# urllib 라이브러리를 사용하여 이미지 URL에서 실제 이미지 데이터를 가져옵니다. 그 후, PIL 라이브러리의 Image 모듈을 사용하여 이미지를 열고 화면에 표시합니다.
result = Image.open(urllib.request.urlopen(image_url))
result.show()