À propos du projet

L'image-optimizer de Spatie est une bibliothèque PHP qui réduit la taille des fichiers image en les faisant passer par une chaîne configurable de binaires d'optimisation externes. Les formats pris en charge sont PNG, JPG, WEBP, AVIF, SVG et GIF. L'image située au chemin indiqué est remplacée par une version optimisée, ou une copie optimisée peut être écrite vers un chemin de sortie distinct. L'installation se fait via Composer (`composer require spatie/image-optimizer`). Le paquet détecte quels binaires d'optimisation sont présents sur le système et les utilise automatiquement. Les outils documentés incluent JpegOptim, Optipng, Pngquant 2, SVGO 1, Gifsicle, cwebp et avifenc, avec des instructions d'installation pour Ubuntu/Debian, macOS (Homebrew) et Fedora/RHEL/CentOS. Le comportement par format est documenté : les JPG passent par JpegOptim avec une qualité de 85, la suppression des métadonnées et l'encodage progressif ; les PNG passent par Pngquant 2 puis Optipng ; les SVG sont minifiés avec SVGO en utilisant les valeurs par défaut moins les plugins cleanupIDs et removeViewBox ; les GIF utilisent Gifsicle au niveau d'optimisation 3 ; les WEBP utilisent cwebp avec des réglages à effort élevé ; les AVIF utilisent avifenc avec des options de qualité constante et de réglage SSIM. Le README note que SVGO peut casser certains SVG. L'utilisation s'articule autour de `OptimizerChainFactory::create()` et `optimize()`. Un délai d'attente peut être défini par optimiseur avec `setTimeout()`. La gestion des erreurs est configurable : par défaut, les échecs sont journalisés et la chaîne continue, tandis que `throws()` relance l'exception et interrompt le traitement, et un callable peut inspecter l'exception, l'optimiseur et l'image pour décider de continuer ou non. Des chaînes personnalisées peuvent être construites en ajoutant des instances d'optimiseur avec leurs propres options, et des optimiseurs personnalisés peuvent implémenter l'interface `Optimizer` ou étendre `BaseSelfHandlingOptimizer` pour les cas sans binaire, comme l'appel à une API externe. Un logger PSR-3 peut être attaché pour enregistrer quels optimiseurs et commandes s'exécutent ainsi que leur sortie. Le README inclut des exemples de conversions avec les réductions de taille de fichier et les valeurs DSSIM pour JPG, WEBP, AVIF, PNG et SVG. Il renvoie également vers des intégrations Laravel, WordPress et SilverStripe. Le projet est sous licence MIT et maintenu par Spatie.