innomedio / sulu-image-optimizer-bundle
Optimizes images before they are being uploaded and stored in the Sulu media library
Installs: 3 627
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^8.2
- spatie/image: ^3.8
- sulu/sulu: ^2.6
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpro/grumphp: ^2.4
- phpstan/phpstan: ^1.10
README
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
- bmp
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 file extensions to skip optimization (e.g. gif , bmp , webp ) |
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_media
sulu_media.post_media_trigger
Once detected, it:
- Validates the file is an image
- Optionally skips optimization based on extension (
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