somehow-digital / typo3-media-processing
Media Processing
Installs: 1 015
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 3
Forks: 1
Open Issues: 2
Type:typo3-cms-extension
pkg:composer/somehow-digital/typo3-media-processing
Requires
- php: ^8.1 || ^8.2 || ^8.3 || ^8.4
- ext-openssl: *
- smalot/pdfparser: ^v2.11.0
- symfony/options-resolver: ^6.4 || ^7.2
- typo3/cms-core: ^12.4 || ^13.4 || dev-main
Requires (Dev)
- johnbacon/stout: ^1.16.1
- roave/security-advisories: dev-latest
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 | 🟢 | 🟢 | 🟢 | 🟢 |
| 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 📦
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
opensslextension
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.
imglab.io integration.imglab
| option | type | description | default |
|---|---|---|---|
| api_endpoint | string | The Gumlet URL of the imglab.io service. | null |
| signature | bool | Enable signature of the imglab.io service. | false |
| signature_key | string | The signature key of the imglab.io service. | null |
See also the official imglab.io 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 🛟
- Discord
- Discussions
- Issues
Roadmap 🚧
Version 1.0.0 🏷️ developing
- ✅ Support for TYPO3
12. - ✅ Support for TYPO3
13. - ✅ Support
resizeoperations. - ✅ Support
cropoperations. - ✅ Provider for imgproxy
library. - ✅ Provider for imagor
library. - ✅ Provider for thumbor
library. - ✅ Provider for optimole.com
service. - ✅ Provider for bunny.net
service. - ✅ Provider for cloudflare.com
service. - ✅ Provider for imagekit.io
service. - ✅ Provider for sirv.com
service. - ✅ Provider for imgix.com
service. - ✅ Provider for cloudinary.com
service. - ✅ Provider for cloudimage.io
service. - ✅ Provider for gumlet.com
service. - ✅ Provider for imglab.io
service. - Release.
Version 2.0.0 🏷️ planning
- Support for gravity configuration via
focusAreaoperations. - Support for manual and smart gravity configuration.
- Provider for glide
library. - Provider for imaginary
library. - Provider for imageflow
library. - Provider for weserv
library. - Provider for fastly.com
service. - Provider for shortpixel.com
service. - Provider for imagify.io
service. - 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.