Spaces:
Sleeping
Sleeping
import gradio as gr | |
from rembg import remove | |
from PIL import Image | |
import logging | |
import os | |
# 로깅 설정 | |
logging.basicConfig(level=logging.INFO) | |
def remove_background(input_image): | |
try: | |
logging.info("Processing image.") | |
if isinstance(input_image, str): | |
input_img = Image.open(input_image) | |
else: | |
input_img = input_image | |
# 배경 제거 (파란색 배경으로 설정) | |
output_img = remove(input_img) | |
background = Image.new("RGBA", output_img.size, (255, 255, 255, 1)) # 흰색색 배경 | |
output_img = Image.alpha_composite(background, output_img) | |
logging.info("Background removed successfully.") | |
return output_img | |
except Exception as e: | |
logging.error(f"Error removing background: {e}") | |
return f"에러가 발생했습니다: {str(e)}" | |
def clear_images(): | |
return None, None | |
# 예제 이미지 경로 설정 | |
example_images = [ | |
"./example1.jpg", | |
"./example2.jpg" | |
] | |
# 예제 이미지 경로 확인 | |
for img_path in example_images: | |
if not os.path.exists(img_path): | |
logging.warning(f"Example image {img_path} does not exist. Please provide valid paths.") | |
# Gradio 인터페이스 구성 | |
with gr.Blocks(css=""" | |
#btn-remove { | |
background-color: #4CAF50; /* 초록색 */ | |
color: black; | |
} | |
#btn-reset { | |
background-color: #FF9800; /* 주황색으로 변경 */ | |
color: black; | |
} | |
""") as demo: | |
gr.Markdown("# 이미지 배경 제거기") | |
gr.Markdown("이미지를 업로드하면 배경이 자동으로 제거되고 흰색 배경으로 대체됩니다.") | |
with gr.Row(): | |
input_image = gr.Image( | |
type="pil", | |
label="입력 이미지", | |
interactive=True | |
) | |
output_image = gr.Image( | |
type="pil", | |
label="배경 제거된 이미지", | |
interactive=False | |
) | |
with gr.Row(): | |
btn_remove = gr.Button("배경 제거", elem_id="btn-remove") | |
btn_remove.click(fn=remove_background, inputs=input_image, outputs=output_image) | |
btn_reset = gr.Button("초기화", elem_id="btn-reset") | |
btn_reset.click(fn=clear_images, inputs=None, outputs=[input_image, output_image]) | |
gr.Examples( | |
examples=[[img] for img in example_images], | |
inputs=input_image, | |
label="예제 이미지" | |
) | |
if __name__ == "__main__": | |
demo.launch() |