innomedio / sulu-image-optimizer-bundle
Optimizes images before they are being uploaded and stored in the Sulu media library
Package info
github.com/innomedio/sulu-image-optimizer-bundle
Type:symfony-bundle
pkg:composer/innomedio/sulu-image-optimizer-bundle
Requires
- php: ^8.2
- spatie/image: ^3.8
- sulu/sulu: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpro/grumphp: ^2.4
- phpstan/phpstan: ^1.10
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Warning
This bundle is abandoned and no longer maintained. It is replaced by
eekes/sulu-image-optimizer-bundle.
The successor fixes the known problems of this bundle: an optimized image that turned out larger was stored anyway, square images were never resized, animated GIFs were flattened, and a failure or an image too large for the memory limit could break the upload. It also sanitizes SVG uploads, keeps a log of every upload in the Sulu admin, and can optimize the existing media library.
composer remove innomedio/sulu-image-optimizer-bundle composer require eekes/sulu-image-optimizer-bundle
The configuration key and the bundle class changed. The steps are in docs/migrating.md of the new
package. The two bundles cannot be installed together.
The successor supports Sulu 3 only. Projects on Sulu 2 can keep using v2.2 of this bundle, which stays installable but receives no fixes.
The documentation below describes the last release, v3.1.
This bundle optimizes and optionally resizes images before they're added to the Sulu media library.
Its especially useful when working with large files on shared hosting environments, where Sulu's default image processing (like cropping) may hit server resource limits.
✨ Features
- Automatically optimizes uploaded images
- Optional resizing to limit image dimensions
- Option to ignore specific image types (e.g. GIFs)
📦 Installation
Install via Composer:
composer require innomedio/sulu-image-optimizer-bundle
Make sure the bundle is registered in config/bundles.php (usually automatic):
Innomedio\Sulu\ImageOptimizerBundle\InnomedioSuluImageOptimizerBundle::class => ['all' => true],
⚙️ Configuration
Add the configuration to your Symfony config, e.g. in config/packages/innomedio_sulu_image_optimizer.yaml:
innomedio_sulu_image_optimize_config:
enabled: true
logger: 'monolog.logger.image_optimizer' # optional logger
resize:
enabled: true
max_size: 4000 # pixels, based on the longest side
ignore_types:
- gif
- webp
Configuration Reference
| Option | Type | Default | Description |
|---|---|---|---|
enabled |
boolean | true |
Whether optimization is active |
logger |
string/null | null |
(Optional) PSR logger service ID |
ignore_types |
array | [] |
List of image formats to skip optimization (e.g. gif, webp). Formats are detected from file content, not filename. Unsupported formats (e.g. bmp) are skipped automatically. |
resize.enabled |
boolean | true |
Whether resizing is active |
resize.max_size |
integer | 4000 |
Maximum width or height in pixels |
🔧 How It Works
The bundle listens to image upload requests on Sulu routes like:
sulu_media.post_mediasulu_media.post_media_trigger
Once detected, it:
- Validates the file is an image
- Optionally skips optimization based on detected image format (
ignore_types) - Optimizes the file using Spatie Image Optimizer
- Optionally resizes the image if it exceeds the configured
max_size - Saves the modified image before it's passed to Sulu