Optimize your pictures on-the-fly! 🛫
Laravel >= 8.0
NOTE: These instructions are for Laravel >= 8.0. If you are using prior version, please see the previous version's docs.
composer require novius/laravel-media-toolbox
Then, you must publish and run the migrations to create the language_lines table:
php artisan vendor:publish --provider="Novius\MediaToolbox\MediaToolboxServiceProvider" --tag="migrations"
php artisan migrate
Then add this to config/app.php
:
// in 'aliases' => [ ... ]
'Medt' => Novius\MediaToolbox\Support\MediaToolbox::class,
In a view:
<!-- This will change the height proportionaly, in order to keep the aspect -->
<img src="{{ Medt::asset('images/hello.png')->width(150) }}">
<!-- It works as well with external pictures. Setting the ratio will force
previously defined dimensions and change the remaining ones, here the height -->
<img src="{{ Medt::asset('https://example.com/images/logo.png')->width(500)->ratio(16/9) }}">
<!-- fit('cover') is the default behavior. You can just omit it -->
<img src="{{ Medt::asset($user->getPicture())->size(140, 200)->fit('cover') }}">
<img src="{{ Medt::asset($user->getPicture())->size([140, 200])->fit('stretch') }}">
<!-- This will output a jpg with 75% quality.
Lower number makes smaller files. Minimum is 1, max is 100 -->
<img src="{{ Medt::asset('images/something.gif')->quality(75) }}">
SEO Friendly
You can specify a name for your filename (value will be converted to slug) :
Usage in a view:
<img src="{{ Medt::asset('images/hello.png')->quality(90)->name('my image') }}">
Publish the config file:
php artisan vendor:publish --provider="Novius\MediaToolbox\MediaToolboxServiceProvider"
Edit config/mediatoolbox.php
.
php artisan cache:clear
In your app/Console/Kernel.php file, you should register a daily job to purge expired medias :
protected function schedule(Schedule $schedule)
{
$schedule->command('media-toolbox:purge-expired')
->daily();
}
By default, media is stale considered after 1 week. You can override this value in configuration file with `expire key.
Run php-cs with:
composer run-script lint
Contributions are welcome! Leave an issue on Github, or create a Pull Request.