copy / app.py
seawolf2357's picture
Update app.py
f78f277 verified
raw
history blame
1.69 kB
import requests
import gradio as gr
import os
import imageio
import numpy as np
from PIL import Image
import requests
from io import BytesIO
import tempfile
# Pexels API 키를 여기에 입력하세요
API_KEY = os.getenv('API_KEY')
API_URL = 'https://api.pexels.com/v1/search'
def search_images(keyword):
headers = {'Authorization': API_KEY}
params = {'query': keyword, 'per_page': 5} # per_page 값을 5로 설정
response = requests.get(API_URL, headers=headers, params=params)
if response.status_code == 200 and response.json()['photos']:
photos = response.json()['photos']
images = []
for photo in photos:
image_url = photo['src']['original']
response = requests.get(image_url)
img = Image.open(BytesIO(response.content))
images.append(img)
# 이미지를 영상으로 합치기
with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as tmpfile:
with imageio.get_writer(tmpfile.name, fps=0.5) as video: # 2초 간격
for img in images:
video.append_data(np.array(img))
return tmpfile.name # 임시 파일의 경로 반환
else:
return "검색 결과가 없습니다."
interface = gr.Interface(
fn=search_images,
inputs=gr.Textbox(lines=2, placeholder="검색할 이미지 키워드를 입력하세요"),
outputs=gr.Video(label="검색 결과"),
title="Pexels 이미지 검색기",
description="Pexels에서 키워드에 맞는 이미지를 검색하고, 해당 이미지를 영상으로 변환합니다."
)
if __name__ == "__main__":
interface.launch()