intervention/image-laravel
Laravel integration for Intervention Image. Adds a service provider, facade, and publishable config for app-wide image settings (GD or Imagick). Install via Composer and manage image processing consistently across your Laravel app.
GD for Imagick via config/image.php requires no code changes.response()->image()) and facade (Image::) provide hooks for future extensions (e.g., adding AI preprocessing, custom filters) without modifying core logic.vendor:publish command suffices, making it ideal for brownfield projects.php-gd, php-imagick). Risk mitigation: Document extension requirements in README and provide fallback strategies (e.g., default to GD with warnings).config/image.php to auto-fallback to GD with degraded performance.memory_limit. Mitigation: Implement chunked processing or queue jobs (e.g., Laravel Queues) for background processing.config/image.php on startup to catch misconfigurations early?ImageManager instantiation with Image:: (e.g., Image::make($file)->resize()).config/ system for centralized settings.Storage facade (e.g., Storage::put() for saving processed images).response()->image() macro for HTTP responses, aligning with Laravel’s response system.dispatch(new ProcessImageJob($image))).ImageManager usage, custom scripts).composer require intervention/image-laravel
php artisan vendor:publish --provider="Intervention\Image\Laravel\ServiceProvider"
ImageManager calls with the facade in new features.new ImageManager()).config/image.php.Deprecates trait).Storage facade.converting events to use the facade.config/image.php (e.g., set driver to Imagick, adjust options).AppServiceProvider:
public function boot()
{
if (!extension_loaded(config('image.driver') === \Intervention\Image\Drivers\Imagick\Driver::class ? 'imagick' : 'gd')) {
throw new \RuntimeException('Required PHP extension not installed.');
}
}
ImageManager usage with Image:: facade (e.g., Image::make() → Image::read()).// Before
$manager = new \Intervention\Image\ImageManager(['driver' => 'gd']);
$image = $manager->make($file)->resize(300, 200);
// After
$image = Image::read($file)->resize(300, 200);
response()->image() for HTTP responses to reduce boilerplate:
return response()->image($image, Format::WEBP, quality: 80);
Image::read()).config/image.php, reducing technical debt from hardHow can I help you explore Laravel packages today?