import os # cache_dir = os.path.expanduser('~/.cache/hf') # os.environ['TRANSFORMERS_CACHE'] = cache_dir # os.environ['HF_HOME'] = cache_dir # os.makedirs(cache_dir, exist_ok=True) # cache_dir = os.environ.get("CACHE_DIR", "/workspace/.cache") # os.makedirs(cache_dir, exist_ok=True) from fastapi import FastAPI, UploadFile, File, Form from fastapi.responses import StreamingResponse from utils import generate_sticker from io import BytesIO from PIL import Image app = FastAPI() @app.post("/generate") async def generate(image: UploadFile = File(...), style: str = Form("chibi")): # Read image file as PIL image_pil = Image.open(BytesIO(await image.read())) # Generate sticker result_img = generate_sticker(image_pil, style) # Save output image to a buffer buf = BytesIO() result_img.save(buf, format="PNG") buf.seek(0) return StreamingResponse(buf, media_type="image/png") # If you want to run directly: uvicorn app:app --host 0.0.0.0 --port 8000 # import gradio as gr # from utils import generate_sticker # def predict(image, prompt): # result_img = generate_sticker(image, prompt) # return result_img # Should be PIL Image or np.array or filepath # with gr.Blocks() as demo: # gr.Markdown("# 🦄 AI Sticker Generator (Stable Diffusion + IP-Adapter)") # with gr.Row(): # image_input = gr.Image(type="pil", label="Upload your photo") # prompt_input = gr.Textbox( # label="Prompt (style or mood for emoji)", # value="cartoon emoji, white outline, clean background", # ) # output_image = gr.Image(label="Sticker Output") # run_btn = gr.Button("Generate Sticker") # run_btn.click( # predict, # inputs=[image_input, prompt_input], # outputs=output_image # ) # if __name__ == "__main__": # demo.launch(server_name="0.0.0.0", share=True)