Description
Imagor Studio est l'interface utilisateur du projet Imagor — un processeur d'images haute performance écrit en Go, capable de transformer des images à la volée via une URL (ex: ?width=800&height=600&fit=cover&format=webp). Imagor Studio ajoute à ce backend puissant une UI web moderne pour composer visuellement ces transformations.
Pourquoi c'est utile : Imagor seul, c'est une API. Il faut écrire des URL à la main ou intégrer dans un CMS. Imagor Studio offre : interface drag & drop pour uploader, sliders et forms pour les transformations, aperçu temps réel, URL générée automatiquement (copier-coller), gestion de buckets S3 ou local, historique des transformations, galerie de pré-versions.
Fonctionnalités clés : transformation d'images (resize, crop, rotate, flip, blur, sharpen), conversion de format (WebP, AVIF, JPEG, PNG), filtres (brightness, contrast, saturation, gamma), watermark, auto-orientation EXIF, strip metadata, URL signée (HMAC), cache CDN-like (HTTP cache headers), support S3, GCS, Azure, filesystem, crop intelligent (smartcrop, détection de visage).
Cas d'usage : e-commerce (images produits multi-tailles), CMS headless (URLs dynamiques), CDN d'images self-hosted, avatar/profile pic avec recadrage intelligent.
Installation
Via Docker Compose (recommandé)
# docker-compose.yml
services:
imagor:
image: shumc/imagor:latest
container_name: imagor
restart: unless-stopped
volumes:
- /mnt/photos:/mnt/data
environment:
- IMAGOR_SECRET=***
- IMAGOR_BIND=0.0.0.0:8000
ports:
- 8000:8000
imagor-studio:
image: ghcr.io/cshum/imagor-studio:latest
container_name: imagor-studio
restart: unless-stopped
environment:
- IMAGOR_STUDIO_IMAGOR_URL=http://imagor:8000
ports:
- 8090:8000
depends_on:
- imagor
Exemple d'URL Imagor
http://imagor:8000/unsafe/photo.jpg?width=800&height=600&fit=cover&format=webp
Configuration
- Secret HMAC :
IMAGOR_SECRETpour signer les URLs (évite abus). - Stockage : filesystem local, S3, GCS, Azure Blob.
- Cache : Redis recommandé pour les transformations.
- Loader : configurer la source des images (S3, dossier, URL HTTP).
- Strip metadata : activer par défaut pour la vie privée.
Alternatives
- [[app-mazanoke]] — Compression/conversion côté client, plus simple
- [[app-withoutbg]] — Spécialisé en détourage IA
- Thumbor — Plus ancien, Python, équivalent en fonctionnalités
Sécurité
- Secret HMAC : indispensable en production, garder confidentiel.
- URLs signées avec expiration : générer côté serveur pour les utilisateurs.
- HTTPS : obligatoire.
- Rate limiting : en reverse proxy (toutes les transformations sont calculées ou cachées, mais coûteuses si nouvelles).

