daddl3 / liip_imagine_template_bundle
Symfony Bundle with image templates for liip Imagine
Package info
gitlab.com/daddl3/liip_imagine_template_bundle
Type:symfony-bundle
pkg:composer/daddl3/liip_imagine_template_bundle
Requires
- php: ^8.5
- ext-gd: *
- ext-http: *
- ext-openssl: *
- liip/imagine-bundle: ^2.7
- symfony/asset: ^7 | ^8
- symfony/cache: ^7 | ^8
- symfony/config: ^7 | ^8
- symfony/console: ^7 | ^8
- symfony/dependency-injection: ^7 | ^8
- symfony/finder: ^7 | ^8
- symfony/framework-bundle: ^7 | ^8
- symfony/http-client: ^7 | ^8
- symfony/http-kernel: ^7 | ^8
- symfony/mailer: ^7 | ^8
- symfony/messenger: ^7 | ^8
- symfony/twig-bundle: ^7 | ^8
Requires (Dev)
- roave/security-advisories: dev-latest
- dev-develop
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- v0.0.36
- v0.0.35
- v0.0.34
- v0.0.33
- v0.0.32
- v0.0.31
- v0.0.30
- v0.0.29
- v0.0.28
- v0.0.27
- v0.0.26
- v0.0.25
- v0.0.24
- v0.0.23
- v0.0.22
- v0.0.21
- v0.0.20
- v0.0.19
- v0.0.18
- v0.0.17
- v0.0.16
- v0.0.15
- v0.0.14
- v0.0.13
- v0.0.12
- v0.0.11
- v0.0.10
- v0.0.9
- v0.0.8
- v0.0.7
- v0.0.6
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
- dev-main
This package is auto-updated.
Last update: 2026-06-07 10:46:57 UTC
README
Liip Imagine Template Symfony Bundle
Liip Integration for Symfony
Getting started
This bundle helps you to use Liip Imagine Bundle
Installation
$ composer requ daddl3/liip_imagine_template_bundle
Config
you have to config liip_imagine like this
liip_imagine:
resolvers:
data:
web_path:
web_root: "%kernel.project_dir%/public"
cache_prefix: media/cache/resolve
loaders:
data:
filesystem:
data_root: "%kernel.project_dir%/data" // important
Avif and Webp
to enable one of them just add those
parameters:
daddl3_liip_imagine_template.avif: true
daddl3_liip_imagine_template.webp: true
Manual Image Generation
To manually generate images (to avoid slow automatic generation), use the provided command.
How it works:
- Applies Liip Imagine filters (resize, crop, etc.) to create filtered JPG/PNG images
- Creates WebP/AVIF versions of filtered images using GD (if enabled in config)
Important: The command respects your configuration parameters:
- If
daddl3_liip_imagine_template.webp: trueis set, WebP images will be generated automatically using GD - If
daddl3_liip_imagine_template.avif: trueis set, AVIF images will be generated automatically using GD - You can override these settings using command flags
# Generate images using config parameters (webp/avif based on your config)
php bin/console daddl3:liip:generate-images news_pics/folder --all-filters
# Generate standard JPG/PNG images for a single file with specific filters
php bin/console daddl3:liip:generate-images news_pics/folder/image.jpg -f meta -f meta_tablet -f meta_mobile
# Force WebP generation (overrides config)
php bin/console daddl3:liip:generate-images news_pics/folder --all-filters --webp
# Force AVIF generation (overrides config)
php bin/console daddl3:liip:generate-images news_pics/folder --all-filters --avif
# Generate ALL formats (JPG/PNG + WebP + AVIF) - overrides config
php bin/console daddl3:liip:generate-images news_pics/folder --all-filters --all-formats
# Generate with custom filters and force WebP
php bin/console daddl3:liip:generate-images news_pics/folder -f slider_image -f slider_image_tablet --webp
# Show available options
php bin/console daddl3:liip:generate-images --help
Command Options:
path(required): Path to image or directory relative to data root--filtersor-f: Specify filter names (can be used multiple times)--webpor-w: Force WebP generation (overrides config parameter)--avif: Force AVIF generation (overrides config parameter)--all-formats: Generate all formats (JPG/PNG, WebP, AVIF) - overrides config--all-filtersor-a: Apply common filters (meta, meta_tablet, meta_mobile)
Note: If you don't specify --webp, --avif, or --all-formats, the command will use your configuration parameters (daddl3_liip_imagine_template.webp and daddl3_liip_imagine_template.avif).
Examples:
# Pre-generate all images for a news article with all formats (override config)
php bin/console daddl3:liip:generate-images news_pics/article-123 --all-filters --all-formats
# Pre-generate slider images using config settings
php bin/console daddl3:liip:generate-images news_pics/slider -f slider_image -f slider_image_tablet -f slider_image_mobile
# Pre-generate with only WebP, even if config has avif enabled
php bin/console daddl3:liip:generate-images news_pics/slider --all-filters --webp
Asynchronous Image Generation
For the same work as the command, but off the request cycle, dispatch the
GenerateImagesMessage. This avoids the slow, synchronous on-demand generation
that LiipImagine would otherwise perform during template rendering (which can
exceed PHP's max_execution_time and make the page hang).
How it works (one job per image): GenerateImagesMessage carries the path and
all filters. Its handler does no generation — it only lists the image files
under the path and dispatches one GenerateImageMessage per image. Each
GenerateImageMessage then builds that single image's filtered base images (all
filters) plus their WebP/AVIF variants. So the worker processes one image at a
time, memory stays bounded no matter how many images a folder holds, and the web
request never blocks. You only ever dispatch GenerateImagesMessage.
Both messages are routed to the bundle's image transport. Make sure a worker
consumes it — add a memory limit so it recycles between jobs:
php bin/console messenger:consume image --memory-limit=256M
Dispatch it — for example after creating or editing an entity that owns images:
use daddl3\LiipImagineTemplateBundle\Message\GenerateImagesMessage;
use Symfony\Component\Messenger\MessageBusInterface;
public function __construct(private readonly MessageBusInterface $messageBus) {}
// path is relative to the LiipImagine data root, just like the command
$this->messageBus->dispatch(new GenerateImagesMessage(
path: 'news_pics/article-123',
filters: ['meta', 'meta_tablet', 'meta_mobile', 'slider_image', 'slider_image_tablet', 'slider_image_mobile'],
// generateWebp / generateAvif default to null = use the bundle config parameters
));
Generation is idempotent: already existing cache files are skipped, only missing/deleted ones are (re)built — so it is safe to dispatch on every save.
Message Parameters:
path(required): Path to image or directory relative to data rootfilters(required):array<string>of Liip Imagine filter names to generategenerateWebp(optional, defaultnull):true/falseto force,null= use configgenerateAvif(optional, defaultnull):true/falseto force,null= use config
Information
Some functions are just for my infrastructure