該軟體包是 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)。請參閱許可證文件以獲取更多資訊。