import gradio as gr from PIL import Image import torch from diffusers import StableDiffusionPipeline # cartoon 캐리커쳐 특화 모델(대표 예, 바꿔도 됨) SD_MODEL_ID = "Fictiverse/Stable-Diffusion-Comic" DEVICE = "cuda" if torch.cuda.is_available() else "cpu" pipe = StableDiffusionPipeline.from_pretrained( SD_MODEL_ID, torch_dtype=torch.float16 if DEVICE=="cuda" else torch.float32 ).to(DEVICE) pipe.safety_checker = None def to_cartoon(image): prompt = "caricature, cartoon, highly detailed, cute, colorful, big head, digital illustration, clean background, outline" # img2img 방식: strength(변화 세기) 조절 cartoon = pipe(prompt=prompt, image=image, strength=0.7, num_inference_steps=20).images[0] return cartoon with gr.Blocks(css=""" body { background: linear-gradient(135deg, #fceabb 0%, #f8b500 100%);} .gradio-container { background-color: #fffde7 !important;} .gr-button { background: #a7ffeb; border-radius: 18px; } #preview-img img { border-radius: 28px; border: 3px solid #ffc107; box-shadow:0 8px 32px #ffa00044;} """) as app: gr.Markdown("""