Spaces:
Running
title: Outpaint
emoji: 🐢
colorFrom: yellow
colorTo: red
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
Note: This README was generated with assistance from GPT and should be verified against the current implementation.
Outpaint
Outpaint is a small Gradio application that extends an image in one direction with Google's Gemini image-generation model (gemini-2.5-flash-image, nicknamed Nano Banana in the UI).
The app pads the selected edge with chroma-key green, generates an editable instruction describing which region to fill, sends the padded image and prompt to Gemini, and displays the returned image. A generated result can be reused as the next input for iterative expansion.
Workflow
- Upload an image.
- Choose top, bottom, left, or right and select 50–500 pixels of padding.
- Inspect the green padded preview and optionally edit the generated prompt.
- Click Outpaint with Nano Banana.
- Optionally click Reuse Outpainted Image and repeat in another direction.
All image state lives in the Gradio session. The application does not implement persistent storage or a separate HTTP API route.
Project layout
| Path | Purpose |
|---|---|
app.py |
Image padding, Gemini request handling, Gradio UI, and event wiring |
requirements.txt |
Pillow and Google Gen AI SDK dependencies |
README.md |
Hugging Face Space metadata and project documentation |
Prerequisites
- Python 3.10 or newer
- A Google Gemini API key with access to
gemini-2.5-flash-image - Network access to Google's Generative AI API
The hosted Space provides Gradio 5.49.1. Install it explicitly for local development because requirements.txt does not list Gradio.
Configuration
| Variable | Required | Purpose |
|---|---|---|
GEMINI_API_KEY |
Yes | Authenticates google-genai requests |
The Gemini client is created when app.py is imported, so set the variable before starting Python. Never commit API keys.
Run locally
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install "gradio==5.49.1"
export GEMINI_API_KEY="..."
python app.py
Open http://127.0.0.1:7860 and follow the workflow above. The app starts Gradio with debug logging enabled.
Hugging Face Space notes
- Repository:
GFHLabs/Outpaint - SDK: Gradio 5.49.1
- Entry point:
app.py - Add
GEMINI_API_KEYunder Settings → Variables and secrets as a secret. - Pushing changes to the Space repository triggers a rebuild/restart.
- The generated image is returned by the model; the code does not preserve source or output files outside Gradio's temporary handling.
Troubleshooting
- Authentication or permission error: confirm
GEMINI_API_KEYis set before startup and that the key can usegemini-2.5-flash-imagein the current account/region. - No image is returned: inspect the runtime logs. When the response contains no inline image data, the app intentionally returns the padded input and labels it as “no result from API.”
- Green remains in the result: make the custom prompt explicitly require the entire green region to be replaced, or reduce the padding and retry.
- The extension looks inconsistent: use a smaller padding amount and describe the expected scene continuation, lighting, perspective, and objects in the custom prompt.
- An edit appears to use stale state: click a direction after uploading or reusing an image; that action refreshes the padded image and direction state.
- Local import error for Gradio: install the metadata-pinned version shown above; it is supplied by Hugging Face but omitted from
requirements.txt.