← Back to blog

Lets write a simple, efficient and fast flask-based image server in an afternoon

….that uses lanczos resampling to serve optimized cached photos.

Find this project on GitHub here: jesssullivan/FastPhotoAPI

Interact with this API graphically here (hosted on koyeb via Docker): https://api.birdphoto.website/

Structure:

This application adopts the factory pattern; flask run instantiates the built-in development server by executing create_app() at the root of the app/ package, while python application.py creates a new production application, served by waitress.

git clone https://github.com/Jesssullivan/FastPhotoAPI && cd FastPhotoAPI python3.12 -m venv fast_photo_venv source fast_photo_venv/bin/activate pip install -r requirements.txt

Structure:

├── app ├── init.py # create and serve development application └── main ├── config │ │ └── config.cfg # set directories, max image dimensions, etc │ ├── fullsize │ │ └── routes.py # Blueprint routing for serving verbatim image files │ ├── init.py # create_app() entrypoint │ ├── resampled │ │ ├── model.py # Image resampling methods │ │ └── routes.py # Blueprint routing for /image/ │ └── static │ └── routes.py # Blueprint routing for /static/ ├── application.py # create and serve production application w/ waitress ├── cache # resampled images are dynamically generated adn stored here ├── Dockerfile # currently deployed at Koyeb ├── pictures # full res pictures go here ├── README.md # you are here ├── static │ └── style.css # index styling └── templates ├── index.html └── upload.html

Build :

Locally:

# dev WSGI: flask run # 0.0.0.0:5000

waitress WSGI: flask run # 0.0.0.0:8000

Production via Docker:

build production docker image:

docker build -t <srv>.

serve production docker image locally:

docker run -d -p 8000:8000 <srv>:latest

stop local image:

docker ps

docker stop

push image to a container registery:

docker push <srv>

Basic Usage:
– Fetch a resampled & cached image /image/<yourimage>
– Fetch the original, unmodified image /full/<yourimage>

Originally published at www.transscendsurvival.org

Comments

© 2026 Jess Sullivan

| RSS