PHPackages                             somehow-digital/typo3-media-processing - 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. somehow-digital/typo3-media-processing

ActiveTypo3-cms-extension[Image &amp; Media](/categories/media)

somehow-digital/typo3-media-processing
======================================

Media Processing

v0.10.0(1y ago)121.3k↑173.3%1[3 issues](https://github.com/somehow-digital/typo3-media-processing/issues)[1 PRs](https://github.com/somehow-digital/typo3-media-processing/pulls)GPL-3.0PHPPHP ^8.1 || ^8.2 || ^8.3 || ^8.4

Since May 8Pushed 1mo ago3 watchersCompare

[ Source](https://github.com/somehow-digital/typo3-media-processing)[ Packagist](https://packagist.org/packages/somehow-digital/typo3-media-processing)[ Docs](https://somehow.digital/)[ RSS](/packages/somehow-digital-typo3-media-processing/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (5)Versions (18)Used By (0)

Media Processing for TYPO3
==========================

[](#media-processing-for-typo3)

`Media Processing` for TYPO3 integrates various image processing libraries and SaaS cloud services into TYPO3 by leveraging their APIs to process images. This basically replaces the need for local image processing libraries like `ImageMagick` for image processing operations.

**Providers**

nameresizecropfocussign[**imgproxy**](https://imgproxy.net/)🟢🟢🟢🟢[**imagor**](https://github.com/cshum/imagor)🟢🟢🟡🟢[**thumbor**](https://github.com/thumbor/thumbor)🟢🟢🟡🟢[**optimole.com** ](https://optimole.com/)🟢🟢🟢🔴[**bunny.net** ](https://bunny.net/)🟢🟢🔴🟢[**cloudflare.com** ](https://developers.cloudflare.com/)🟢🟢🟢🔴[**imagekit.io** ](https://imagekit.io/)🟢🟢🟡🟢[**sirv.com** ](https://sirv.com/)🟢🟢🟡🔴[**imgix.com** ](https://imgix.com/)🟢🟢🟡🟢[**cloudinary.com** ](https://cloudinary.com/)🟢🟢🟡🟢[**cloudimage.io** ](https://cloudimage.io/)🟢🟢🟡🟢[**gumlet.com** ](https://www.gumlet.com/)🟢🟢🟢🟢[**imglab.io** ](https://www.imglab.io/)🟢🟢🟢🟢- `resize`: Provider supports resize operations.
- `crop`: Provider supports crop operations.
- `focus`: Provider supports gravity or focus points. (experimental)
- `sign`: Provider supports URL signing.

🟢 supported and integrated
🟡 supported but not integrated
🔴 unsupported

Installation 📦
--------------

[](#installation-)

**Composer Mode**

Install the [`somehow-digital/typo3-media-processing`](https://packagist.org/packages/somehow-digital/typo3-media-processing)package from the `Composer Package Repository`.

```
composer require somehow-digital/typo3-media-processing
```

**Legacy Mode**

Install the [`media_processing`](https://extensions.typo3.org/extension/media_processing/)extension from the `TYPO3 Extension Repository`.

### Requirements

[](#requirements)

- TYPO3 `12`-`13`
- PHP `8.1`-`8.4`
- PHP [`openssl`](https://www.php.net/manual/en/book.openssl.php) extension

Setup ⚙️
--------

[](#setup-️)

By choosing and configuring one of the available image processing providers, TYPO3 will use the configured provider to process images instead of using the local image processing library.

### Configuration

[](#configuration)

Extension configuration is located in the TYPO3 backend under `Admin Tools → Settings → Extension Configuration`.

**common** `common`

optiontypedescriptiondefaultprovideroptionsService provider to use for image processing.`null`storageboolEnable local storage of processed files.`false`backendboolEnable image processing in the backend.`true`frontendboolEnable image processing in the frontend.`true`**imgproxy** `provider.imgproxy`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the imgproxy service.`null`source\_loaderoptionsThe source loader of the imgproxy service.urisource\_uristringThe origin host URL where files are stored.`null`signatureboolEnable signature of the imgproxy service.`false`signature\_keystringThe signature key of the imgproxy service.`null`signature\_saltstringThe signature salt of the imgproxy service.`null`signature\_sizeintThe signature size of the imgproxy service.`null`encryptionboolEnable encryption of the imgproxy service.`false`encryption\_keystringThe encryption key of the imgproxy service.`null`See also the official [`imgproxy` documentation](https://docs.imgproxy.net/)for more information.

**imagor** `provider.imagor`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the imagor service.`null`source\_loaderoptionsThe source loader of the imagor service.urisource\_uristringThe origin host URL where files are stored.`null`signatureboolEnable signature of the imagor service.`false`signature\_keystringThe signature key of the imagor service.`null`signature\_algorithmoptionsThe signature algorithm of the imagor service.sha1signature\_lengthintThe signature size of the imagor service.`null`See also the official [`imagor` documentation](https://github.com/cshum/imagor)for more information.

**thumbor** `provider.thumbor`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the thumbor service.`null`source\_loaderoptionsThe source loader of the thumbor service.urisource\_uristringThe origin host URL where files are stored.`null`signatureboolEnable signature of the thumbor service.`false`signature\_keystringThe signature key of the thumbor service.`null`signature\_algorithmoptionsThe signature algorithm of the thumbor service.sha1signature\_lengthintThe signature size of the thumbor service.`null`See also the official [`thumbor` documentation](https://thumbor.readthedocs.io/)for more information.

**optimole.com** `provider.optimole`

optiontypedescriptiondefaultapi\_keystringThe API key of the optimole service.`null`source\_uristringThe origin host URL where files are stored.`null`See also the official [`optimole` documentation](https://docs.optimole.com/)for more information.

**bunny.net** `provider.bunny`

optiontypedescriptiondefaultapi\_endpointstringThe Pull Zone URL of the bunny.net service.`null`source\_uristringThe origin host URL where files are stored.`null`signatureboolEnable signature of the bunny.net service.`false`signature\_keystringThe signature key of the bunny.net service.`null`See also the official [`bunny.net` documentation](https://docs.bunny.net/docs/)for more information.

**cloudflare.com** `provider.cloudflare`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the cloudflare service.`null`source\_uristringThe origin host URL where files are stored.`null`See also the official [`cloudflare` documentation](https://developers.cloudflare.com/images/image-resizing/)for more information.

**imagekit.io** `provider.imagekit`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the imagekit service.`null`source\_uristringThe origin host URL where files are stored.`null`signatureboolEnable signature of the imagekit service.`false`signature\_keystringThe signature key of the imagekit service.`null`See also the official [`imagekit.io` documentation](https://docs.imagekit.io/)for more information.

**sirv.com** `provider.sirv`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the sirv service.`null`source\_uristringThe origin host URL where files are stored.`null`See also the official [`sirv.com` documentation](https://sirv.com/help/articles/dynamic-imaging/)for more information.

**imgix.com** `provider.imgix`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the imgix service.`null`source\_loaderoptionsThe source loader of the imgix service.foldersource\_uristringThe origin host URL where files are stored.`null`signatureboolEnable signature of the imgix service.`false`signature\_keystringThe signature key of the imgix service.`null`See also the official [`imgix.com` documentation](https://docs.imgix.com/)for more information.

**cloudinary.com** `provider.cloudinary`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the cloudinary service.`null`delivery\_modeoptionsThe source loader of the cloudinary service.fetchsource\_uristringThe origin host URL where files are stored.`null`signatureboolEnable signature of the cloudinary service.`false`signature\_keystringThe signature key of the cloudinary service.`null`signature\_algorithmoptionsThe signature algorithm of the cloudinary service.sha1See also the official [`cloudinary.com` documentation](https://cloudinary.com/documentation/)for more information.

**cloudimage.io** `provider.cloudimage`

optiontypedescriptiondefaultapi\_endpointstringThe API endpoint of the cloudimage service.`null`source\_uristringThe origin host URL where files are stored.`null`signatureboolEnable signature of the cloudinary service.`false`signature\_keystringThe signature key of the cloudinary service.`null`See also the official [`cloudimage.io` documentation](https://docs.cloudimage.io/)for more information.

**gumlet.com** `provider.gumlet`

optiontypedescriptiondefaultapi\_endpointstringThe Gumlet URL of the gumlet.com service.`null`signatureboolEnable signature of the gumlet.com service.`false`signature\_keystringThe signature key of the gumlet.com service.`null`See also the official [`gumlet.com` documentation](https://docs.gumlet.com/)for more information.

**imglab.io** `integration.imglab`

optiontypedescriptiondefaultapi\_endpointstringThe Gumlet URL of the imglab.io service.`null`signatureboolEnable signature of the imglab.io service.`false`signature\_keystringThe signature key of the imglab.io service.`null`See also the official [`imglab.io` documentation](https://imglab.io/docs/overview/introduction/)for more information.

Usage 🪄
-------

[](#usage-)

API
---

[](#api)

### Events

[](#events)

**MediaProcessedEvent**

The `MediaProcessedEvent` is dispatched after a media file has been processed and can be used to adapt the final URI before it is stored in the database.

```
use SomehowDigital\Typo3\MediaProcessing\Event\MediaProcessedEvent;

class MediaProcessedEventListener
{
  public function __invoke(MediaProcessedEvent $event): void
  {
    $event->getService();
    $event->getTask();
    $event->getResult();
  }
}
```

Support 🛟
---------

[](#support-)

- Discord
- [Discussions](https://github.com/somehow-digital/typo3-media-processing/discussions)
- [Issues](https://github.com/somehow-digital/typo3-media-processing/issues)

Roadmap 🚧
---------

[](#roadmap-)

Version **1.0.0** 🏷️ `developing`

- ✅ Support for TYPO3 `12`.
- ✅ Support for TYPO3 `13`.
- ✅ Support `resize` operations.
- ✅ Support `crop` operations.
- ✅ Provider for [**imgproxy** `library`](https://github.com/imgproxy/imgproxy).
- ✅ Provider for [**imagor** `library`](https://github.com/cshum/imagor).
- ✅ Provider for [**thumbor** `library`](https://github.com/thumbor/thumbor).
- ✅ Provider for [**optimole.com** `service`](https://optimole.com/).
- ✅ Provider for [**bunny.net** `service`](https://bunny.net/).
- ✅ Provider for [**cloudflare.com** `service`](https://developers.cloudflare.com/images/).
- ✅ Provider for [**imagekit.io** `service`](https://imagekit.io/).
- ✅ Provider for [**sirv.com** `service`](https://sirv.com/).
- ✅ Provider for [**imgix.com** `service`](https://imgix.com/).
- ✅ Provider for [**cloudinary.com** `service`](https://cloudinary.com/).
- ✅ Provider for [**cloudimage.io** `service`](https://www.cloudimage.io/).
- ✅ Provider for [**gumlet.com** `service`](https://www.gumlet.com/).
- ✅ Provider for [**imglab.io** `service`](https://www.imglab.io/).
- Release.

Version **2.0.0** 🏷️ `planning`

- Support for gravity configuration via `focusArea` operations.
- Support for manual and smart gravity configuration.
- Provider for [**glide** `library`](https://glide.thephpleague.com/).
- Provider for [**imaginary** `library`](https://github.com/h2non/imaginary).
- Provider for [**imageflow** `library`](https://www.imageflow.io/).
- Provider for [**weserv** `library`](https://images.weserv.nl/).
- Provider for [**fastly.com** `service`](https://fastly.com/).
- Provider for [**shortpixel.com** `service`](https://shortpixel.com/).
- Provider for [**imagify.io** `service`](https://imagify.io/).
- Providers per site.
- Send HEAD requests to speed up image generation.

Version **3.0.0** 🏷️ `researching`

- Integration of more image processing libraries/services.
- Integration of video processing libraries/services.

---

[`somehow.digital`](https://somehow.digital/)

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance66

Regular maintenance activity

Popularity26

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 98.5% 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 ~55 days

Total

14

Last Release

436d ago

PHP version history (3 changes)v0.1.0PHP ^8.1

v0.5.0PHP ^8.1 || ^8.2 || ^8.3

v0.8.0PHP ^8.1 || ^8.2 || ^8.3 || ^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/38b23f01c936315db03de52b789382c879f7471302f2692f5cfd55454147e553?d=identicon)[thasmo](/maintainers/thasmo)

---

Top Contributors

[![thasmo](https://avatars.githubusercontent.com/u/184284?v=4)](https://github.com/thasmo "thasmo (129 commits)")[![rtp-cgs](https://avatars.githubusercontent.com/u/59559730?v=4)](https://github.com/rtp-cgs "rtp-cgs (2 commits)")

---

Tags

image-processingtypo3typo3-extensionimageperformanceresizemediaextensioncloudflareresponsivethumborcroptypo3bunnyWebpavifimgproxyimagekitheicsirvheifimagoroptimole

### Embed Badge

![Health badge](/badges/somehow-digital-typo3-media-processing/health.svg)

```
[![Health](https://phpackages.com/badges/somehow-digital-typo3-media-processing/health.svg)](https://phpackages.com/packages/somehow-digital-typo3-media-processing)
```

###  Alternatives

[ayvazyan10/nova-imagic

Imagic is a Laravel Nova field package that allows for image manipulation capabilities, such as cropping, resizing, quality adjustment, and WebP conversion. It utilizes the powerful Intervention Image class for image manipulation.

144.5k1](/packages/ayvazyan10-nova-imagic)

PHPackages © 2026

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