bkreplacer / app.py
sth4nth's picture
Update app.py
edd56c8 verified
Raw
History Blame Contribute Delete
1.61 kB
import gradio as gr
from rembg import remove
from PIL import Image
import io
def merge_images(foreground, background):
# foreground와 background를 바이트 배열로 변환
foreground_bytes = io.BytesIO()
foreground.save(foreground_bytes, format="PNG")
foreground_bytes.seek(0) # 포인터를 처음으로 이동
background_bytes = io.BytesIO()
background.save(background_bytes, format="PNG")
background_bytes.seek(0) # 포인터를 처음으로 이동
# 배경 제거
foreground_no_bg_bytes = remove(foreground_bytes.read())
# 바이트 데이터를 BytesIO 스트림으로 변환하여 PIL 이미지로 로드
foreground_no_bg = Image.open(io.BytesIO(foreground_no_bg_bytes)).convert("RGBA")
background_image = Image.open(background_bytes).convert("RGBA")
# 배경 이미지 크기 조정
background_image = background_image.resize(foreground_no_bg.size)
# 메인 이미지와 배경 이미지 합치기
merged_image = Image.alpha_composite(background_image, foreground_no_bg)
# 결과 이미지를 PIL 이미지 객체로 반환
return merged_image
with gr.Blocks() as demo:
with gr.Row():
foreground_input = gr.Image(type="pil", label="Upload your main image")
background_input = gr.Image(type="pil", label="Upload your background image")
image_output = gr.Image(type="pil", label="Merged Image")
btn = gr.Button("Merge Images")
btn.click(fn=merge_images, inputs=[foreground_input, background_input], outputs=image_output)
if __name__ == "__main__":
demo.launch()