Chainable Python client for Imagor and Thumbor image processing servers
Imgora provides a clean, chainable interface for generating image URLs for Imagor, Thumbor and Wsrv.nl image processing servers. It supports all standard operations and filters with full type hints and documentation.
- Imagor, Thumbor & Wsrv.nl Support: Compatible with Imagor, Thumbor and Wsrv.nl servers
- URL Signing: Built-in support for secure URL signing
- Chainable API: Fluent interface for building complex image processing pipelines
- Comprehensive Filter Support: Implements all standard filters and operations
- Fully Typed: Built with Python's type hints for better IDE support and code quality
Using uv (recommended):
uv pip install imgoraOr with pip:
pip install imgorafrom imgora import WsrvNl
image_url = "https://wsrv.nl/puppy.jpg"
img = (
# Imagor(base_url="http://localhost:8018", signer=Signer(key="my_key", type="sha256"))
WsrvNl()
.with_image(image_url)
.crop(0.1, 0.2, 0.6, -100)
.resize(200, 150)
.blur(3)
.grayscale()
.quality(50)
)
# print(img.path()) # path without url
print(img.url())Which returns:
https://wsrv.nl/?url=https%3A%2F%2Fwsrv.nl%2Fpuppy.jpg&cx=166&cy=221&cw=831&ch=787&precrop&w=200&h=150&blur=2.50&filt=greyscale&quality=50
Processed image
Original image (width reduced to 400px)
NOTE:
In order to test the url with Imagor or Thumbor you need to start a server. You can do this with the following command:
docker compose up imagor -d
docker compose up thumbor -ddocker compose up -d # start imagor and thumbor server
uv run examples/compare_backends.pyFor complete documentation, including API reference and advanced usage, please visit the documentation site.
To set up the development environment:
# Clone the repository
git clone https://github.com/burgdev/imgora.git
cd imgora
# Install development dependencies
make
uv run invoke install # install 'dev' and 'test' dependencies per default, use --all to install all dependenciesContributions are welcome! Please see CONTRIBUTING.md for details.
MIT - See LICENSE for details.