PHPackages                             kaliop/image-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. kaliop/image-bundle

ActiveSymfony-bundle[Image &amp; Media](/categories/media)

kaliop/image-bundle
===================

A set of tools for managing images in Ibexa.

v2.0.3(3w ago)0200↑520%1GPL-2.0-onlyPHPPHP &gt;=8.3CI passing

Since Jun 3Pushed 3w agoCompare

[ Source](https://github.com/kaliop/image-bundle)[ Packagist](https://packagist.org/packages/kaliop/image-bundle)[ Docs](https://github.com/kaliop/image-bundle)[ RSS](/packages/kaliop-image-bundle/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (6)Dependencies (17)Versions (8)Used By (0)

Kaliop Image Bundle
===================

[](#kaliop-image-bundle)

A set of tools for managing image variations in Ibexa DXP.

The bundle extends Ibexa image handling with automatically generated WebP variations, density multiplier variations, focal-point-aware cropping, Fastly Image Optimizer support, Admin UI image variation filtering, and a Twig helper for building `srcset` attributes.

Compatibility
-------------

[](#compatibility)

Bundle lineIbexaSymfonyPHP1.x4.65.4 LTS&gt;= 8.12.x5.07.4 LTS&gt;= 8.3Installation
------------

[](#installation)

Install the bundle with Composer:

```
composer require kaliop/image-bundle
```

If the bundle is not registered automatically by your application, add it to `config/bundles.php`:

```
return [
    Kaliop\Bundle\Image\KaliopImageBundle::class => ['all' => true],
];
```

Configuration
-------------

[](#configuration)

Create `config/packages/kaliop_image.yaml`:

```
kaliop_image:
    image_variations:
        # Generates custom image variations suffixed with "-webp" for WebP images.
        enable_webp: true

        # Generates custom image variations for the given multipliers.
        # Generated variation names are suffixed with "_x(multiplier)", for example: "_x1.5" or "_x2".
        multipliers: [ 1.5, 2 ]

        # Image variations for which WebP variations should not be generated.
        ignore_variations_webp: [ original ]

        # Image variations for which multiplier variations should not be generated.
        ignore_variations_multipliers: [ original ]

    admin_ui:
        # Limits image variations visible in the Ibexa Back Office RichText editor.
        visible_image_variations:
            - tiny
            - small
            - medium
            - large
```

Automatically Generated Image Variations
----------------------------------------

[](#automatically-generated-image-variations)

The bundle reads the configured Ibexa image variations and adds extra variations at runtime.

Given this Ibexa image variation:

```
ibexa:
    system:
        default:
            image_variations:
                large:
                    reference: original
                    filters:
                        thumbnail:
                            size: [ 800, 600 ]
                            mode: outbound
```

And this bundle configuration:

```
kaliop_image:
    image_variations:
        enable_webp: true
        multipliers: [ 1.5, 2 ]
        ignore_variations_webp: [ original ]
        ignore_variations_multipliers: [ original ]
```

The bundle makes the following additional variations available:

- `large-webp` - same variation in WebP format
- `large_x1.5` - same variation with numeric filter dimensions scaled by `1.5`
- `large_x2` - same variation with numeric filter dimensions scaled by `2`
- `large_x1.5-webp` - scaled variation in WebP format
- `large_x2-webp` - scaled variation in WebP format

The multiplier generator scales integer filter values in both Ibexa-style and LiipImagineBundle-style filter configuration. This allows standard local image variations to be used in the same way as Fastly Image Optimizer variations.

Use `ignore_variations_webp` and `ignore_variations_multipliers` to exclude selected base variations from automatic generation.

Focal-Point Thumbnail Filter
----------------------------

[](#focal-point-thumbnail-filter)

The bundle provides a LiipImagineBundle filter loader named `thumbnail/focal-point`.

It works like the standard `thumbnail` filter with `outbound` cropping, but the crop area is calculated around the focal point stored on the Ibexa image field. If the image has no focal point metadata, the image center is used.

Example local image variation:

```
ibexa:
    system:
        default:
            image_variations:
                card:
                    reference: original
                    filters:
                        thumbnail/focal-point:
                            size: [ 640, 360 ]
                            mode: outbound
```

This generates a `640x360` crop that keeps the configured focal point inside the crop whenever possible.

The filter accepts the same relevant options as `thumbnail`:

- `size: [width, height]` - required target dimensions
- `mode: outbound` - crop to exact dimensions, default behavior
- `mode: inset` - resize inside the target box
- `filter` - optional Imagine resize filter name

You do not need to pass focal point coordinates manually in configuration. The bundle injects `focalPointX` and `focalPointY` from the image field metadata when the variation is generated.

Fastly Image Optimizer Support
------------------------------

[](#fastly-image-optimizer-support)

When Ibexa Fastly Image Optimizer is installed, this bundle decorates its variation handler and applies the same focal-point behavior to Fastly-generated URLs.

### Automatic Fastly WebP and Multiplier Variations

[](#automatic-fastly-webp-and-multiplier-variations)

The bundle also extends configured `fastly_variations` with WebP and multiplier variants.

Given a Fastly variation named `card`, the same suffixes are generated:

- `card-webp`
- `card_x1.5`
- `card_x2`
- `card_x1.5-webp`
- `card_x2-webp`

For multiplier variants, the generated Fastly configuration receives the corresponding `dpr` value. For WebP variants, the generated Fastly configuration receives `format: webp`.

### Focal-Point Crop Option

[](#focal-point-crop-option)

Fastly crop configuration can use `focal-point` as the third crop argument:

```
ibexa:
    system:
        default:
            fastly_variations:
                card:
                    configuration:
                        crop: '640,360,focal-point'
```

The bundle converts this value into a Fastly crop rectangle based on the image focal point, then sets the requested `width` and `height` query parameters.

If the image has no focal point metadata, the crop is centered.

Admin UI Image Variation Filtering
----------------------------------

[](#admin-ui-image-variation-filtering)

Use `admin_ui.visible_image_variations` to limit which image variations are exposed in the Ibexa Back Office image variation configuration, including the RichText editor image selection UI.

```
kaliop_image:
    admin_ui:
        visible_image_variations:
            - tiny
            - small
            - medium
            - large
```

This does not remove or disable other image variations. It only hides them from the Admin UI configuration exposed to editors.

Twig `srcset` Helper
--------------------

[](#twig-srcset-helper)

The bundle provides the Twig function `kaliop_image_srcset()` for generating a `srcset` value from the configured multipliers.

Signature:

```
kaliop_image_srcset(field, versionInfo, variation, webp = false)
```

Example:

```
{% set image_field = content.getField('image') %}
{% set image = ibexa_image_alias(image_field, content.versionInfo, 'large') %}

```

Example with WebP sources:

```
{% set image_field = content.getField('image') %}
{% set fallback_image = ibexa_image_alias(image_field, content.versionInfo, 'large') %}

```

For a `large` variation and `multipliers: [1.5, 2]`, the helper will try to use:

- `large`
- `large_x1.5`
- `large_x2`

When the fourth argument is `true`, it will use WebP variation names:

- `large-webp`
- `large_x1.5-webp`
- `large_x2-webp`

Missing variations are skipped and logged.

Variation Naming Convention
---------------------------

[](#variation-naming-convention)

The bundle uses the following naming convention for generated variations:

- WebP: `{variation}-webp`
- Multiplier: `{variation}_x{multiplier}`
- Multiplier WebP: `{variation}_x{multiplier}-webp`

Examples:

- `small-webp`
- `small_x1.5`
- `small_x2`
- `small_x2-webp`

Contribute
----------

[](#contribute)

Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.

License
-------

[](#license)

This library is released under the MIT license. See the included [LICENSE](LICENSE) file for more information.

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance95

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 81.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Total

7

Last Release

21d ago

Major Versions

v1.0.0 → v2.0.02026-06-04

1.x-dev → v2.0.32026-07-03

PHP version history (2 changes)v1.0.0PHP ^8.1

v2.0.0PHP &gt;=8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/15861042?v=4)[Stanislaw Klimaszewski](/maintainers/sklimaszewski)[@sklimaszewski](https://github.com/sklimaszewski)

---

Top Contributors

[![sklimaszewski](https://avatars.githubusercontent.com/u/15861042?v=4)](https://github.com/sklimaszewski "sklimaszewski (9 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")[![miwaniak-kaliop](https://avatars.githubusercontent.com/u/243533978?v=4)](https://github.com/miwaniak-kaliop "miwaniak-kaliop (1 commits)")

---

Tags

symfonyimageSymfony BundleResponsive ImagesWebpibexafocal point

###  Code Quality

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/kaliop-image-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/kaliop-image-bundle/health.svg)](https://phpackages.com/packages/kaliop-image-bundle)
```

###  Alternatives

[aws/aws-sdk-php

AWS SDK for PHP - Use Amazon Web Services in your PHP project

6.2k543.5M2.7k](/packages/aws-aws-sdk-php)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M215](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.8k](/packages/contao-core-bundle)[mediamonks/sonata-media-bundle

A powerful, flexible and easy to use alternative for the existing Sonata Media Bundle

109.8k](/packages/mediamonks-sonata-media-bundle)[snowcap/im-bundle

Imagemagick wrapper for Symfony2

2347.2k2](/packages/snowcap-im-bundle)[somehow-digital/typo3-media-processing

Media Processing

121.3k](/packages/somehow-digital-typo3-media-processing)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
