Este pacote é a integração específica do Laravel 6.0 e superior do spatie/image-optimizer. Ele pode otimizar PNGs, JPGs, SVGs e GIFs executando-os por meio de uma cadeia de várias ferramentas de otimização de imagens. O pacote detectará automaticamente quais binários de otimização estão instalados em seu sistema e os utilizará.
Veja como você pode usá-lo:
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 );
Você não gosta de fachadas, você diz? Sem problemas! Basta resolver uma instância configurada de SpatieImageOptimizerOptimizerChain
fora do contêiner:
app ( Spatie ImageOptimizer OptimizerChain::class)-> optimize ( $ pathToImage );
O pacote também contém um middleware para otimizar automaticamente todas as imagens em uma solicitação.
Não use Laravel, você diz? Sem problemas! Basta usar o otimizador de espaço/imagem subjacente diretamente.
Investimos muitos recursos na criação dos melhores pacotes de código aberto. Você pode nos apoiar comprando um de nossos produtos pagos.
Agradecemos muito que você nos envie um cartão postal de sua cidade natal, mencionando qual(is) de nossos pacotes você está usando. Você encontrará nosso endereço em nossa página de contato. Publicamos todos os cartões postais recebidos em nosso mural virtual de cartões postais.
Você pode instalar o pacote via compositor:
composer require spatie/laravel-image-optimizer
O pacote será registrado automaticamente.
O pacote usa vários binários para otimizar imagens. Para saber quais e como instalá-los, vá para a seção de ferramentas de otimização no leia-me do pacote otimizador de imagem subjacente. Esse leia-me também contém informações sobre o que essas ferramentas farão com suas imagens.
O pacote vem com alguns padrões sensatos para otimizar imagens. Você pode modificar essa configuração publicando o arquivo de configuração.
php artisan vendor:publish --provider= " SpatieLaravelImageOptimizerImageOptimizerServiceProvider "
Este é o conteúdo do arquivo config/image-optimizer
que será publicado:
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 ,
];
Se você deseja otimizar automaticamente as imagens que são carregadas em seu aplicativo, adicione SpatieLaravelImageOptimizerMiddlewaresOptimizeImages::class
no kernel http.
// app/Http/Kernel.php
protected $ middlewareAliases = [
...
' optimizeImages ' => Spatie LaravelImageOptimizer Middlewares OptimizeImages::class,
];
Você pode resolver uma instância configurada de SpatieImageOptimizerOptimizerChain
fora do contêiner:
// 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 );
Você não gosta de fachadas, você diz? Sem problemas! Basta resolver uma instância configurada de SpatieImageOptimizerOptimizerChain
fora do contêiner:
app ( Spatie ImageOptimizer OptimizerChain::class)-> optimize ( $ pathToImage );
Todas as imagens que estiverem em solicitações de rotas que usam o middleware optimizeImages
serão otimizadas automaticamente.
Route:: middleware ( ' optimizeImages ' )-> group ( function () {
// all images will be optimized automatically
Route:: post ( ' upload-images ' , ' UploadController@index ' );
});
Para aprender como criar seu próprio otimizador, leia a seção "Escrever otimizadores personalizados" no leia-me do pacote spatie/image-optimizer subjacente.
Você pode adicionar o nome de classe totalmente qualificado do seu otimizador como uma chave na matriz optimizers
no arquivo de configuração.
Aqui estão alguns exemplos de conversões feitas pelo otimizador.
Consulte CHANGELOG para obter mais informações sobre o que mudou recentemente.
composer test
Consulte CONTRIBUINDO para obter detalhes.
Se você encontrou um bug relacionado à segurança, envie um email para [email protected] em vez de usar o rastreador de problemas.
Você é livre para usar este pacote (é licenciado pelo MIT), mas se ele chegar ao seu ambiente de produção, agradecemos muito que você nos envie um cartão postal de sua cidade natal, mencionando quais de nossos pacotes você está usando.
Nosso endereço é: Spatie, Kruikstraat 22, 2018 Antuérpia, Bélgica.
Publicamos todos os cartões postais recebidos no site da nossa empresa.
A ideia de um middleware que otimize todos os arquivos em uma requisição é tirada de abordagem/laravel-image-optimizer.
A licença MIT (MIT). Consulte Arquivo de licença para obter mais informações.