このパッケージは、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
パッケージは自動的に登録されます。
このパッケージは、画像を最適化するために多数のバイナリを使用します。どのツールのインストール方法を確認するには、基礎となるイメージ オプティマイザー パッケージの Readme にある最適化ツールのセクションにアクセスしてください。この 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 ,
];
アプリケーションにアップロードされる画像を自動的に最適化したい場合は、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 パッケージの Readme にある「カスタム オプティマイザーの作成」セクションを参照してください。
オプティマイザーの完全修飾クラス名を、構成ファイルのoptimizers
配列のキーとして追加できます。
オプティマイザーによって行われた変換の例をいくつか示します。
最近の変更点の詳細については、CHANGELOG を参照してください。
composer test
詳細については、「貢献」を参照してください。
セキュリティに関するバグを見つけた場合は、問題トラッカーを使用する代わりに [email protected] にメールを送信してください。
このパッケージは自由に使用できます (MIT ライセンスが付与されています) が、実稼働環境に導入できた場合は、どのパッケージを使用しているかを記載したポストカードを故郷から送っていただければ幸いです。
私たちの住所は、Spatie, Kruikstraat 22, 2018 Antwerp, Belgiumです。
いただいたはがきはすべて当社ホームページに掲載しております。
リクエスト内のすべてのファイルを最適化するミドルウェアのアイデアは、approached/laravel-image-optimizer から取得しています。
MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。