novius / laravel-media-toolbox
This packages helps you optimize pictures on-the-fly
Installs: 3 846
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 4
Open Issues: 4
Requires
- php: >=7.3
- ext-gd: *
- laravel/framework: ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.16.4
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^8.0
README
Optimize your pictures on-the-fly! 🛫
Requirements
Laravel >= 8.0
NOTE: These instructions are for Laravel >= 8.0. If you are using prior version, please see the previous version's docs.
Installation
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,
Use
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') }}">
Configure
Publish the config file:
php artisan vendor:publish --provider="Novius\MediaToolbox\MediaToolboxServiceProvider"
Edit config/mediatoolbox.php
.
Clearing the cache manually
php artisan cache:clear
Purge expired medias
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.
Lint
Run php-cs with:
composer run-script lint
Contributing
Contributions are welcome! Leave an issue on Github, or create a Pull Request.