Об этом проекте
Библиотека image-optimizer от Spatie — это PHP-библиотека, которая уменьшает размер файлов изображений, пропуская их через настраиваемую цепочку внешних бинарных оптимизаторов. Поддерживаются форматы PNG, JPG, WEBP, AVIF, SVG и GIF. Изображение по указанному пути перезаписывается оптимизированной версией, либо оптимизированная копия может быть записана в отдельный путь вывода.
Установка осуществляется через Composer (`composer require spatie/image-optimizer`). Пакет определяет, какие бинарные оптимизаторы присутствуют в системе, и использует их автоматически. Документированные инструменты включают JpegOptim, Optipng, Pngquant 2, SVGO 1, Gifsicle, cwebp и avifenc, с инструкциями по установке для Ubuntu/Debian, macOS (Homebrew) и Fedora/RHEL/CentOS.
Документировано поведение для каждого формата: JPG обрабатываются через JpegOptim с качеством 85, удалением метаданных и прогрессивным кодированием; PNG — через Pngquant 2 с последующим Optipng; SVG минифицируются с помощью SVGO с настройками по умолчанию, за исключением плагинов cleanupIDs и removeViewBox; GIF используют Gifsicle на уровне оптимизации 3; WEBP — cwebp с настройками высокого усилия; AVIF — avifenc с постоянным качеством и настройками SSIM. В README отмечается, что SVGO может сломать некоторые SVG.
Использование сосредоточено на `OptimizerChainFactory::create()` и `optimize()`. Для каждого оптимизатора можно установить тайм-аут с помощью `setTimeout()`. Обработка ошибок настраивается: по умолчанию сбои логируются, и цепочка продолжается, тогда как `throws()` повторно выбрасывает исключение и прерывает выполнение, а вызываемая функция может проверить исключение, оптимизатор и изображение, чтобы решить, продолжать ли. Можно создавать пользовательские цепочки, добавляя экземпляры оптимизаторов с их собственными параметрами, а пользовательские оптимизаторы могут реализовывать интерфейс `Optimizer` или расширять `BaseSelfHandlingOptimizer` для случаев без бинарника, например, при вызове внешнего API. Можно подключить PSR-3 логгер для записи, какие оптимизаторы и команды выполнялись и их вывод.
README включает примеры конвертаций с уменьшением размера файла и значениями DSSIM для JPG, WEBP, AVIF, PNG и SVG. Также указаны интеграции с Laravel, WordPress и SilverStripe. Проект лицензирован под MIT и поддерживается Spatie.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.