Sobre o projeto

O image-optimizer da Spatie é uma biblioteca PHP que reduz arquivos de imagem passando-os por uma cadeia configurável de binários de otimização externos. Os formatos suportados são PNG, JPG, WEBP, AVIF, SVG e GIF. A imagem no caminho fornecido é sobrescrita por uma versão otimizada, ou uma cópia otimizada pode ser gravada em um caminho de saída separado. A instalação é via Composer (`composer require spatie/image-optimizer`). O pacote detecta quais binários de otimização estão presentes no sistema e os utiliza automaticamente. As ferramentas documentadas incluem JpegOptim, Optipng, Pngquant 2, SVGO 1, Gifsicle, cwebp e avifenc, com instruções de instalação para Ubuntu/Debian, macOS (Homebrew) e Fedora/RHEL/CentOS. O comportamento por formato está documentado: JPGs passam pelo JpegOptim com qualidade 85, remoção de metadados e codificação progressiva; PNGs passam pelo Pngquant 2 seguido do Optipng; SVGs são minificados com SVGO usando os padrões menos os plugins cleanupIDs e removeViewBox; GIFs usam Gifsicle no nível de otimização 3; WEBPs usam cwebp com configurações de alto esforço; AVIFs usam avifenc com opções de qualidade constante e ajuste de SSIM. O README observa que o SVGO pode quebrar alguns SVGs. O uso centra-se em `OptimizerChainFactory::create()` e `optimize()`. Um timeout pode ser definido por otimizador com `setTimeout()`. O tratamento de erros é configurável: por padrão, as falhas são registradas e a cadeia continua, enquanto `throws()` relança a exceção e aborta, e um callable pode inspecionar a exceção, o otimizador e a imagem para decidir se continua. Cadeias personalizadas podem ser construídas adicionando instâncias de otimizadores com suas próprias opções, e otimizadores personalizados podem implementar a interface `Optimizer` ou estender `BaseSelfHandlingOptimizer` para casos sem um binário, como chamar uma API externa. Um logger PSR-3 pode ser anexado para registrar quais otimizadores e comandos são executados e sua saída. O README inclui exemplos de conversões com reduções de tamanho de arquivo e valores DSSIM para JPG, WEBP, AVIF, PNG e SVG. Também aponta para integrações com Laravel, WordPress e SilverStripe. O projeto é licenciado sob MIT e mantido pela Spatie.