2017 © Pedro Peláez
 

library laravel-image-optimizer

Optimize images in your Laravel app

image

spatie/laravel-image-optimizer

Optimize images in your Laravel app

  • Tuesday, July 17, 2018
  • by Spatie
  • Repository
  • 18 Watchers
  • 399 Stars
  • 62,964 Installations
  • PHP
  • 11 Dependents
  • 0 Suggesters
  • 46 Forks
  • 1 Open issues
  • 15 Versions
  • 42 % Grown

The README.md

Optimize images in your Laravel app

Latest Version on Packagist Tests Total Downloads, (*1)

This package is the Laravel 6.0 and up specific integration of spatie/image-optimizer. It can optimize PNGs, JPGs, SVGs and GIFs by running them through a chain of various image optimization tools. The package will automatically detect which optimization binaries are installed on your system and use them., (*2)

Here's how you can use it:, (*3)

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);

You don't like facades you say? No problem! Just resolve a configured instance of Spatie\ImageOptimizer\OptimizerChain out of the container:, (*4)

app(Spatie\ImageOptimizer\OptimizerChain::class)->optimize($pathToImage);

The package also contains a middleware to automatically optimize all images in an request., (*5)

Don't use Laravel you say? No problem! Just use the underlying spatie/image-optimizer directly., (*6)

Support us

, (*7)

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products., (*8)

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall., (*9)

Installation

You can install the package via composer:, (*10)

composer require spatie/laravel-image-optimizer

The package will automatically register itself., (*11)

The package uses a bunch of binaries to optimize images. To learn which ones on how to install them, head over to the optimization tools section in the readme of the underlying image-optimizer package. That readme also contains info on what these tools will do to your images., (*12)

The package comes with some sane defaults to optimize images. You can modify that configuration by publishing the config file., (*13)

php artisan vendor:publish --provider="Spatie\LaravelImageOptimizer\ImageOptimizerServiceProvider"

This is the contents of the config/image-optimizer file that will be published:, (*14)

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 `Psr\Log\LoggerInterface`.
     */
    'log_optimizer_activity' => false,
];

If you want to automatically optimize images that get uploaded to your application add the \Spatie\LaravelImageOptimizer\Middlewares\OptimizeImages::class in the http kernel., (*15)

// app/Http/Kernel.php
protected $middlewareAliases = [
   ...
   'optimizeImages' => \Spatie\LaravelImageOptimizer\Middlewares\OptimizeImages::class,
];

Usage

You can resolve a configured instance of Spatie\ImageOptimizer\OptimizerChain out of the container:, (*16)

// 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);

Using the facade

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);

You don't like facades you say? No problem! Just resolve a configured instance of Spatie\ImageOptimizer\OptimizerChain out of the container:, (*17)

app(Spatie\ImageOptimizer\OptimizerChain::class)->optimize($pathToImage);

Using the middleware

All images that in requests to routes that use the optimizeImages-middleware will be optimized automatically., (*18)

Route::middleware('optimizeImages')->group(function () {
    // all images will be optimized automatically
    Route::post('upload-images', 'UploadController@index');
});

Adding your own optimizers

To learn how to create your own optimizer read the "Writing custom optimizers" section in the readme of the underlying spatie/image-optimizer package., (*19)

You can add the fully qualified classname of your optimizer as a key in the optimizers array in the config file., (*20)

Example conversions

Here are some example conversions that were made by the optimizer., (*21)

Changelog

Please see CHANGELOG for more information what has changed recently., (*22)

Testing

bash composer test, (*23)

Contributing

Please see CONTRIBUTING for details., (*24)

Security

If you've found a bug regarding security please mail security@spatie.be instead of using the issue tracker., (*25)

Postcardware

You're free to use this package (it's MIT-licensed), but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using., (*26)

Our address is: Spatie, Kruikstraat 22, 2018 Antwerp, Belgium., (*27)

We publish all received postcards on our company website., (*28)

Credits

The idea of a middleware that optimizes all files in a request is taken from approached/laravel-image-optimizer., (*29)

License

The MIT License (MIT). Please see License File for more information., (*30)

The Versions

17/07 2018

dev-master

9999999-dev https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer

05/06 2018
05/06 2018
16/05 2018
14/05 2018

dev-analysis-qvYR2E

dev-analysis-qvYR2E https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer

14/05 2018

dev-analysis-X00eMM

dev-analysis-X00eMM https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer

08/02 2018
11/12 2017
12/09 2017
30/08 2017

dev-laravel-55

dev-laravel-55 https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer

30/08 2017

1.1.0

1.1.0.0 https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer

22/07 2017

1.0.1

1.0.1.0 https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer

13/07 2017

1.0.0

1.0.0.0 https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer

12/07 2017

0.0.2

0.0.2.0 https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer

07/07 2017

0.0.1

0.0.1.0 https://github.com/spatie/laravel-image-optimizer

Optimize images in your Laravel app

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie laravel-image-optimizer