somehow-digital/typo3-media-processing

Media Processing

v0.10.0 2025-04-24 12:48 UTC

README

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

name resize crop focus sign
imgproxy 🟢 🟢 🟢 🟢
imagor 🟢 🟢 🟡 🟢
thumbor 🟢 🟢 🟡 🟢
optimole.com 🟢 🟢 🟢 🔴
bunny.net 🟢 🟢 🔴 🟢
cloudflare.com 🟢 🟢 🟢 🔴
imagekit.io 🟢 🟢 🟡 🟢
sirv.com 🟢 🟢 🟡 🔴
imgix.com 🟢 🟢 🟡 🟢
cloudinary.com 🟢 🟢 🟡 🟢
cloudimage.io 🟢 🟢 🟡 🟢
gumlet.com 🟢 🟢 🟢 🟢
  • 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 📦

Composer Mode

Install the somehow-digital/typo3-media-processing package from the Composer Package Repository.

composer require somehow-digital/typo3-media-processing

Legacy Mode

Install the media_processing extension from the TYPO3 Extension Repository.

Requirements

  • TYPO3 12-13
  • PHP 8.1-8.4
  • PHP openssl extension

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

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

common common

option type description default
provider options Service provider to use for image processing. null
storage bool Enable local storage of processed files. false
backend bool Enable image processing in the backend. true
frontend bool Enable image processing in the frontend. true

imgproxy provider.imgproxy

option type description default
api_endpoint string The API endpoint of the imgproxy service. null
source_loader options The source loader of the imgproxy service. uri
source_uri string The origin host URL where files are stored. null
signature bool Enable signature of the imgproxy service. false
signature_key string The signature key of the imgproxy service. null
signature_salt string The signature salt of the imgproxy service. null
signature_size int The signature size of the imgproxy service. null
encryption bool Enable encryption of the imgproxy service. false
encryption_key string The encryption key of the imgproxy service. null

See also the official imgproxy documentation for more information.

imagor provider.imagor

option type description default
api_endpoint string The API endpoint of the imagor service. null
source_loader options The source loader of the imagor service. uri
source_uri string The origin host URL where files are stored. null
signature bool Enable signature of the imagor service. false
signature_key string The signature key of the imagor service. null
signature_algorithm options The signature algorithm of the imagor service. sha1
signature_length int The signature size of the imagor service. null

See also the official imagor documentation for more information.

thumbor provider.thumbor

option type description default
api_endpoint string The API endpoint of the thumbor service. null
source_loader options The source loader of the thumbor service. uri
source_uri string The origin host URL where files are stored. null
signature bool Enable signature of the thumbor service. false
signature_key string The signature key of the thumbor service. null
signature_algorithm options The signature algorithm of the thumbor service. sha1
signature_length int The signature size of the thumbor service. null

See also the official thumbor documentation for more information.

optimole.com provider.optimole

option type description default
api_key string The API key of the optimole service. null
source_uri string The origin host URL where files are stored. null

See also the official optimole documentation for more information.

bunny.net provider.bunny

option type description default
api_endpoint string The Pull Zone URL of the bunny.net service. null
source_uri string The origin host URL where files are stored. null
signature bool Enable signature of the bunny.net service. false
signature_key string The signature key of the bunny.net service. null

See also the official bunny.net documentation for more information.

cloudflare.com provider.cloudflare

option type description default
api_endpoint string The API endpoint of the cloudflare service. null
source_uri string The origin host URL where files are stored. null

See also the official cloudflare documentation for more information.

imagekit.io provider.imagekit

option type description default
api_endpoint string The API endpoint of the imagekit service. null
source_uri string The origin host URL where files are stored. null
signature bool Enable signature of the imagekit service. false
signature_key string The signature key of the imagekit service. null

See also the official imagekit.io documentation for more information.

sirv.com provider.sirv

option type description default
api_endpoint string The API endpoint of the sirv service. null
source_uri string The origin host URL where files are stored. null

See also the official sirv.com documentation for more information.

imgix.com provider.imgix

option type description default
api_endpoint string The API endpoint of the imgix service. null
source_loader options The source loader of the imgix service. folder
source_uri string The origin host URL where files are stored. null
signature bool Enable signature of the imgix service. false
signature_key string The signature key of the imgix service. null

See also the official imgix.com documentation for more information.

cloudinary.com provider.cloudinary

option type description default
api_endpoint string The API endpoint of the cloudinary service. null
delivery_mode options The source loader of the cloudinary service. fetch
source_uri string The origin host URL where files are stored. null
signature bool Enable signature of the cloudinary service. false
signature_key string The signature key of the cloudinary service. null
signature_algorithm options The signature algorithm of the cloudinary service. sha1

See also the official cloudinary.com documentation for more information.

cloudimage.io provider.cloudimage

option type description default
api_endpoint string The API endpoint of the cloudimage service. null
source_uri string The origin host URL where files are stored. null
signature bool Enable signature of the cloudinary service. false
signature_key string The signature key of the cloudinary service. null

See also the official cloudimage.io documentation for more information.

gumlet.com provider.gumlet

option type description default
api_endpoint string The Gumlet URL of the gumlet.com service. null
signature bool Enable signature of the gumlet.com service. false
signature_key string The signature key of the gumlet.com service. null

See also the official gumlet.com documentation for more information.

Usage 🪄

API

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 🛟

Roadmap 🚧

Version 1.0.0 🏷️ developing

Version 2.0.0 🏷️ planning

Version 3.0.0 🏷️ researching

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

somehow.digital