Этот пакет представляет собой специальную интеграцию spatie/image-optimizer для Laravel 6.0 и более поздних версий. Он может оптимизировать PNG, JPG, SVG и GIF, пропуская их через цепочку различных инструментов оптимизации изображений. Пакет автоматически определит, какие двоичные файлы оптимизации установлены в вашей системе, и будет использовать их.
Вот как вы можете его использовать:
use ImageOptimizer ;
// the image will be replaced with an optimized version which should be smaller
ImageOptimizer:: optimize ( $ pathToImage );
// if you use a second parameter the package will not modify the original
ImageOptimizer:: optimize ( $ pathToImage , $ pathToOptimizedImage );
Говорите, вам не нравятся фасады? Без проблем! Просто разрешите настроенный экземпляр SpatieImageOptimizerOptimizerChain
из контейнера:
app ( Spatie ImageOptimizer OptimizerChain::class)-> optimize ( $ pathToImage );
Пакет также содержит промежуточное программное обеспечение для автоматической оптимизации всех изображений в запросе.
Говорите, не используйте Laravel? Без проблем! Просто используйте базовый оптимизатор spatie/image напрямую.
Мы вкладываем много ресурсов в создание лучших в своем классе пакетов с открытым исходным кодом. Вы можете поддержать нас, купив один из наших платных продуктов.
Мы очень признательны вам за отправку нам открытки из вашего родного города с указанием того, какой из наших пакетов вы используете. Наш адрес вы найдете на странице контактов. Все полученные открытки мы публикуем на нашей виртуальной стене открыток.
Вы можете установить пакет через композитор:
composer require spatie/laravel-image-optimizer
Пакет автоматически зарегистрируется.
Пакет использует набор двоичных файлов для оптимизации изображений. Чтобы узнать, какие из них и как их установить, перейдите в раздел инструментов оптимизации в файле readme базового пакета image-optimizer. Этот файл readme также содержит информацию о том, что эти инструменты будут делать с вашими изображениями.
В пакете есть несколько разумных настроек по умолчанию для оптимизации изображений. Вы можете изменить эту конфигурацию, опубликовав файл конфигурации.
php artisan vendor:publish --provider= " SpatieLaravelImageOptimizerImageOptimizerServiceProvider "
Это содержимое файла config/image-optimizer
, который будет опубликован:
use Spatie ImageOptimizer Optimizers Svgo ;
use Spatie ImageOptimizer Optimizers Optipng ;
use Spatie ImageOptimizer Optimizers Gifsicle ;
use Spatie ImageOptimizer Optimizers Pngquant ;
use Spatie ImageOptimizer Optimizers Jpegoptim ;
use Spatie ImageOptimizer Optimizers Cwebp ;
return [
/**
* When calling `optimize` the package will automatically determine which optimizers
* should run for the given image.
*/
' optimizers ' => [
Jpegoptim::class => [
' -m85 ' , // set maximum quality to 85 %
' --strip-all ' , // this strips out all text information such as comments and EXIF data
' --all-progressive ' // this will make sure the resulting image is a progressive one
],
Pngquant::class => [
' --force ' // required parameter for this package
],
Optipng::class => [
' -i0 ' , // this will result in a non-interlaced , progressive scanned image
' -o2 ' , // this set the optimization level to two ( multiple IDAT compression trials )
' -quiet ' // required parameter for this package
],
Svgo::class => [
' --disable=cleanupIDs ' // disabling because it is known to cause trouble
],
Gifsicle::class => [
' -b ' , // required parameter for this package
' -O3 ' // this produces the slowest but best results
],
Cwebp::class => [
' -m 6 ' , // for the slowest compression method in order to get the best compression .
' -pass 10 ' , // for maximizing the amount of analysis pass .
' -mt ' , // multithreading for some speed improvements .
' -q 90 ' , //quality factor that brings the least noticeable changes .
],
],
/**
* The maximum time in seconds each optimizer is allowed to run separately.
*/
' timeout ' => 60 ,
/**
* If set to `true` all output of the optimizer binaries will be appended to the default log.
* You can also set this to a class that implements `PsrLogLoggerInterface`.
*/
' log_optimizer_activity ' => false ,
];
Если вы хотите автоматически оптимизировать изображения, загружаемые в ваше приложение, добавьте класс SpatieLaravelImageOptimizerMiddlewaresOptimizeImages::class
в ядро http.
// app/Http/Kernel.php
protected $ middlewareAliases = [
...
' optimizeImages ' => Spatie LaravelImageOptimizer Middlewares OptimizeImages::class,
];
Вы можете разрешить настроенный экземпляр SpatieImageOptimizerOptimizerChain
из контейнера:
// the image will be replaced with an optimized version which should be smaller
app ( Spatie ImageOptimizer OptimizerChain::class)-> optimize ( $ pathToImage );
// if you use a second parameter the package will not modify the original
app ( Spatie ImageOptimizer OptimizerChain::class)-> optimize ( $ pathToImage , $ pathToOptimizedImage );
use ImageOptimizer ;
// the image will be replaced with an optimized version which should be smaller
ImageOptimizer:: optimize ( $ pathToImage );
// if you use a second parameter the package will not modify the original
ImageOptimizer:: optimize ( $ pathToImage , $ pathToOptimizedImage );
Говорите, вам не нравятся фасады? Без проблем! Просто разрешите настроенный экземпляр SpatieImageOptimizerOptimizerChain
из контейнера:
app ( Spatie ImageOptimizer OptimizerChain::class)-> optimize ( $ pathToImage );
Все изображения, которые в запросах к маршрутам, использующим промежуточное программное optimizeImages
, будут оптимизированы автоматически.
Route:: middleware ( ' optimizeImages ' )-> group ( function () {
// all images will be optimized automatically
Route:: post ( ' upload-images ' , ' UploadController@index ' );
});
Чтобы узнать, как создать собственный оптимизатор, прочтите раздел «Написание пользовательских оптимизаторов» в файле readme базового пакета spatie/image-optimizer.
Вы можете добавить полное имя класса вашего оптимизатора в качестве ключа в массиве optimizers
в файле конфигурации.
Вот несколько примеров преобразований, выполненных оптимизатором.
Пожалуйста, посетите CHANGELOG для получения дополнительной информации о том, что изменилось за последнее время.
composer test
Пожалуйста, смотрите ВКЛАД для получения подробной информации.
Если вы обнаружили ошибку, связанную с безопасностью, отправьте электронное письмо по адресу [email protected] вместо использования системы отслеживания проблем.
Вы можете свободно использовать этот пакет (он имеет лицензию MIT), но если он попадет в вашу производственную среду, мы будем очень признательны, если вы пришлете нам открытку из вашего родного города с указанием того, какой из наших пакетов вы используете.
Наш адрес: Spatie, Kruikstraat 22, 2018, Антверпен, Бельгия.
Все полученные открытки мы публикуем на сайте нашей компании.
Идея промежуточного программного обеспечения, оптимизирующего все файлы в запросе, взята из Approached/laravel-image-Optimizer.
Лицензия MIT (MIT). Дополнительную информацию см. в файле лицензии.