该软件包是 Laravel 6.0 及以上版本 Spatie/image-optimizer 的特定集成。它可以通过一系列各种图像优化工具运行 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-optimizer 即可。
我们投入了大量资源来创建一流的开源包。您可以通过购买我们的一款付费产品来支持我们。
我们非常感谢您从家乡寄给我们一张明信片,并注明您正在使用我们的哪种套餐。您可以在我们的联系页面上找到我们的地址。我们在虚拟明信片墙上发布所有收到的明信片。
您可以通过 Composer 安装该软件包:
composer require spatie/laravel-image-optimizer
该包将自动注册。
该包使用一堆二进制文件来优化图像。要了解哪些工具以及如何安装它们,请转到底层图像优化器包的自述文件中的优化工具部分。该自述文件还包含有关这些工具将对您的图像执行哪些操作的信息。
该软件包附带了一些合理的默认值来优化图像。您可以通过发布配置文件来修改该配置。
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 ,
];
如果您想自动优化上传到应用程序的图像,请在 http 内核中添加SpatieLaravelImageOptimizerMiddlewaresOptimizeImages::class
。
// 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 ' );
});
要了解如何创建自己的优化器,请阅读底层 spatie/image-optimizer 包的自述文件中的“编写自定义优化器”部分。
您可以将优化器的完全限定类名添加为配置文件中optimizers
数组中的键。
以下是优化器进行的一些转换示例。
请参阅变更日志以了解最近更改的更多信息。
composer test
详细信息请参阅贡献。
如果您发现有关安全的错误,请发送邮件至 [email protected],而不是使用问题跟踪器。
您可以自由使用这个软件包(它是 MIT 许可的),但如果它进入您的生产环境,我们非常感谢您从您的家乡给我们寄一张明信片,注明您正在使用我们的哪个软件包。
我们的地址是:Spatie, Kruikstraat 22, 2018 安特卫普, 比利时。
我们在公司网站上发布所有收到的明信片。
优化请求中所有文件的中间件的想法取自 Approached/laravel-image-optimizer。
麻省理工学院许可证 (MIT)。请参阅许可证文件以获取更多信息。