Photobooth : créez votre propre cabine photo web
Photobooth est une application web open source qui transforme votre navigateur en véritable cabine photo. Simple, légère et entièrement personnalisable.
Fonctionnalités principales
- Capture directement depuis votre webcam avec un retour vidéo en temps réel
- Superposition de fonds PNG (ou JPG, WebP, SVG), vos overlays s’affichent en direct sur le flux vidéo
- Mode miroir activé par défaut pour une expérience selfie naturelle
- Mode photo strip : capturer 4 shots en séquence, assemblés en grille 2×2
- Compteur à rebours personnalisable : 3s, 5s ou 10s avant chaque capture
- Sélecteur de caméra : choisissez votre webcam parmi celles détectées
- Watermark personnalisable affiché en bas de chaque photo
- Taille de sortie optimisée pour l’impression : 10×15 cm paysage (1800×1200 px à 300 DPI)
- Impression via CUPS (Linux) sur papier photo 4×6in glossy, un clic sur “Imprimer” et c’est envoyé
- Raccourcis clavier configurables : personnalisez les touches via
config.json - Manette de jeu : naviguez entre les fonds et déclenchez les actions avec une manette
- Internationalisation : anglais, français, allemand, espagnol (paramètre
langdansconfig.json) - Notifications toast : retours visuels pour sauvegarde/impression et connexions d’appareils
- Aide intégrée : popup de référence des raccourcis clavier accessible depuis la barre de paramètres
Comment ça marche ?
L’application utilise l’API Canvas 2D pour combiner le flux webcam avec les fonds sélectionnés. Les fonds sont redimensionnés pour tenir dans le canvas tout en préservant leur ratio d’aspect. Le serveur Express (Node.js + TypeScript) sert le tout sans étape de build, tsx gère l’exécution directe.
npm install |
Ou utilisez le script ./start.sh qui lance le serveur et ouvre un navigateur en plein écran.
Personnalisation des fonds
Placez vos images dans le dossier backgrounds/, elles apparaissent automatiquement dans l’interface. Vous pouvez définir la position de chaque fond via config.json :
{ |
Format de position : [y] [x] — top, bottom, left, right, ou un pourcentage. Sans position, les fonds sont centrés.
Raccourcis clavier configurables
Les raccourcis sont personnalisables dans config.json :
{ |
Une popup d’aide accessible depuis la barre de paramètres affiche la liste des raccourcis.
Manette de jeu
Connectez une manette pour contrôler le photobooth. Les boutons et axes sont configurables :
{ |
Les valeurs sont un index de bouton (nombre) ou un lien d’axe ({ "axis": N, "dir": -1|1 }).
Internationalisation
Définissez la langue dans config.json :
{ "lang": "fr" } |
Langues supportées : en (défaut), fr, de, es. Les fichiers de traduction sont dans le dossier i18n/.
Installation sur un Raspberry Pi
Le Raspberry Pi est l’usage parfait pour une cabine photo : compact, pas cher, branché à un écran tactile.
Prérequis
- Raspberry Pi (3B+ ou supérieur recommandé) avec Raspberry Pi OS
- Webcam USB (ou caméra officielle Raspberry Pi)
- Écran (tactile si possible)
Étapes
1. Installer Node.js
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - |
Vérifiez :
node -v # v22.x |
2. Cloner et installer le projet
git clone https://github.com/Giwi/photobooth.git |
3. Lancer l’application
npm start |
Ouvrez http://localhost:3000 depuis un navigateur sur le Pi.
Pour un lancement en plein écran automatique, utilisez le script fourni :
./start.sh |
Le script inclut les flags --no-sandbox et --disable-gpu pour la compatibilité Chromium sur Raspberry Pi.
4. (Optionnel) Configurer l’impression via CUPS
sudo apt install -y cups |
Puis définissez votre imprimante par défaut via l’interface web CUPS (http://localhost:631) ou en ligne de commande :
lpstat -p # liste les imprimantes |
5. (Optionnel) Démarrage automatique au boot
Créez un service systemd :
sudo tee /etc/systemd/system/photobooth.service > /dev/null <<EOF |
Note : Si vous utilisez
tsxpour lancer le serveur, adaptezExecStarten conséquence (/usr/bin/npx tsx src/server.ts).
6. (Optionnel) Écran non tactile avec clavier
Si votre écran n’est pas tactile, tout se fait au clavier (raccourcis configurables) :
| Touche | Action |
|---|---|
Espace |
Capturer |
S |
Sauvegarder |
Entrée |
Sauvegarder et imprimer |
Échap |
Annuler |
← → |
Naviguer entre les fonds |
M |
Activer/désactiver le miroir |
T |
Activer/désactiver le mode photo strip |
L’interface reste 100% utilisable sans tactile — le bouton de capture est juste un raccourci clavier.
Conclusion
Photobooth est le genre de projet parfait pour un événement, un mariage, ou simplement pour s’amuser. Pas de dépendances lourdes, pas de build complexe, juste Node.js, un navigateur, et une webcam.