Este paquete es la integración específica de spatie/image-optimizer para Laravel 6.0 y versiones posteriores. Puede optimizar archivos PNG, JPG, SVG y GIF ejecutándolos a través de una cadena de varias herramientas de optimización de imágenes. El paquete detectará automáticamente qué archivos binarios de optimización están instalados en su sistema y los utilizará.
Así es como puedes usarlo:
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 );
¿No te gustan las fachadas, dices? ¡Ningún problema! Simplemente resuelva una instancia configurada de SpatieImageOptimizerOptimizerChain
fuera del contenedor:
app ( Spatie ImageOptimizer OptimizerChain::class)-> optimize ( $ pathToImage );
El paquete también contiene un middleware para optimizar automáticamente todas las imágenes en una solicitud.
¿No uses Laravel, dices? ¡Ningún problema! Simplemente use el optimizador de imágenes/espacia subyacente directamente.
Invertimos muchos recursos en la creación de los mejores paquetes de código abierto. Puedes apoyarnos comprando uno de nuestros productos pagos.
Agradecemos mucho que nos envíe una postal desde su ciudad natal, mencionando cuál de nuestros paquetes está utilizando. Encontrarás nuestra dirección en nuestra página de contacto. Publicamos todas las postales recibidas en nuestro muro virtual de postales.
Puede instalar el paquete a través del compositor:
composer require spatie/laravel-image-optimizer
El paquete se registrará automáticamente.
El paquete utiliza un montón de binarios para optimizar las imágenes. Para saber cuáles y cómo instalarlos, diríjase a la sección de herramientas de optimización en el archivo Léame del paquete optimizador de imágenes subyacente. Ese archivo Léame también contiene información sobre lo que estas herramientas harán con sus imágenes.
El paquete viene con algunos valores predeterminados sensatos para optimizar imágenes. Puede modificar esa configuración publicando el archivo de configuración.
php artisan vendor:publish --provider= " SpatieLaravelImageOptimizerImageOptimizerServiceProvider "
Este es el contenido del archivo config/image-optimizer
que se publicará:
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 ,
];
Si desea optimizar automáticamente las imágenes que se cargan en su aplicación, agregue la SpatieLaravelImageOptimizerMiddlewaresOptimizeImages::class
en el kernel http.
// app/Http/Kernel.php
protected $ middlewareAliases = [
...
' optimizeImages ' => Spatie LaravelImageOptimizer Middlewares OptimizeImages::class,
];
Puede resolver una instancia configurada de SpatieImageOptimizerOptimizerChain
fuera del contenedor:
// 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 );
¿No te gustan las fachadas, dices? ¡Ningún problema! Simplemente resuelva una instancia configurada de SpatieImageOptimizerOptimizerChain
fuera del contenedor:
app ( Spatie ImageOptimizer OptimizerChain::class)-> optimize ( $ pathToImage );
Todas las imágenes que soliciten rutas que utilicen el middleware optimizeImages
se optimizarán automáticamente.
Route:: middleware ( ' optimizeImages ' )-> group ( function () {
// all images will be optimized automatically
Route:: post ( ' upload-images ' , ' UploadController@index ' );
});
Para aprender cómo crear su propio optimizador, lea la sección "Escribir optimizadores personalizados" en el archivo Léame del paquete spatie/image-optimizer subyacente.
Puede agregar el nombre de clase completo de su optimizador como clave en la matriz optimizers
en el archivo de configuración.
A continuación se muestran algunos ejemplos de conversiones realizadas por el optimizador.
Consulte CHANGELOG para obtener más información sobre los cambios recientes.
composer test
Consulte CONTRIBUCIÓN para obtener más detalles.
Si encuentra un error relacionado con la seguridad, envíe un correo electrónico a [email protected] en lugar de utilizar el rastreador de problemas.
Eres libre de utilizar este paquete (tiene licencia del MIT), pero si llega a tu entorno de producción, te agradeceremos mucho que nos envíes una postal desde tu ciudad natal, mencionando cuál de nuestros paquetes estás utilizando.
Nuestra dirección es: Spatie, Kruikstraat 22, 2018 Amberes, Bélgica.
Publicamos todas las postales recibidas en el sitio web de nuestra empresa.
La idea de un middleware que optimice todos los archivos en una solicitud se tomó de approached/laravel-image-optimizer.
La Licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.