Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Image Laravel Package

intervention/image

Intervention Image is a PHP image handling and manipulation library for Laravel and other frameworks. Create, resize, crop, encode, and optimize images with a simple fluent API, supporting GD and Imagick, plus drivers and integrations for common storage and HTTP workflows.

View on GitHub
Deep Wiki
Context7

PHP Image Processing

Frequently asked questions about Image
How do I install Intervention Image in a Laravel project?
Run `composer require intervention/image` in your project directory. The package includes a Laravel service provider and facade, so no additional setup is required unless you want to publish the config file. The facade `Image` will be available globally after installation.
Which Laravel versions does Intervention Image support?
Intervention Image supports Laravel 8.x, 9.x, and 10.x. Version 4.x requires PHP 8.3+, while version 3.x supports older PHP versions (7.4+) and Laravel 5.8+. Check the [changelog](https://github.com/Intervention/image/blob/master/CHANGELOG.md) for specific version compatibility.
Can I use Intervention Image without Laravel?
Yes, Intervention Image is framework-agnostic. You can use it in standalone PHP applications by requiring the package via Composer and instantiating the `ImageManager` manually. The Laravel-specific features (like facades and service providers) are optional.
How do I configure the default image driver (GD vs. Imagick)?
Publish the config file with `php artisan vendor:publish --tag=intervention.image.config`, then set the `driver` key in `config/image.php` to `gd` or `imagick`. Imagick is recommended for advanced features, but GD is more widely available. You can also override the driver per operation using `Image::make()->driver('imagick')->...`.
What are the performance differences between GD and Imagick?
Imagick generally offers better performance for complex operations (e.g., PDF/GIF handling, advanced filters) and supports more formats (like WebP and AVIF). GD is faster for simple tasks and has lower memory overhead, making it a better choice for shared hosting. Benchmark your use case to decide.
How do I handle large images or memory issues in production?
For large images, use streaming with `toResponse()` to avoid loading the entire image into memory. Adjust PHP’s `memory_limit` in `php.ini` if needed, or process images asynchronously with Laravel Queues. Imagick also handles memory more efficiently than GD for complex operations.
Can I cache generated thumbnails to improve performance?
Yes, cache generated images using Laravel’s filesystem or a dedicated cache layer (e.g., Redis). Store thumbnails in `storage/app/public` or a CDN and serve them directly. For dynamic transformations, use query strings (e.g., `image.jpg?width=200`) and cache responses at the web server level (e.g., Nginx `fastcgi_cache`).
How do I test Intervention Image in Laravel’s testing environment?
Use Laravel’s `Mockery` to mock the `ImageManager` or test with real files in your `tests/Feature` directory. For driver-specific tests, ensure the required PHP extension (GD/Imagick) is enabled in your testing environment. Example: `Image::make(storage_path('test.jpg'))->resize(100, 100)->save();`
What are the alternatives to Intervention Image for Laravel?
Alternatives include `spatie/image-optimizer` (for optimization), `league/glide` (for dynamic image URLs), and `spatie/laravel-medialibrary` (for file management with image support). Intervention Image stands out for its simplicity, Laravel integration, and fluent API, but choose based on your need for advanced features like PDF handling or video support.
How do I handle missing GD/Imagick extensions in production?
Check for missing extensions by running `php -m | grep gd` or `php -m | grep imagick` on your server. If only one driver is available, configure Intervention Image to use it via `config/image.php`. For graceful fallbacks, implement error handling around `Image::make()` and log warnings or redirect users to a maintenance page if critical drivers are missing.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport