somehow-digital / typo3-media-processing
Media Processing
Installs: 891
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 3
Forks: 2
Open Issues: 3
Type:typo3-cms-extension
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 | 🟢 | 🟢 | 🟢 | 🟢 |
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 🛟
- Discord
- Discussions
- Issues
Roadmap 🚧
Version 1.0.0 🏷️ developing
- ✅ Support for TYPO3
12
. - ✅ Support for TYPO3
13
. - ✅ Support
resize
operations. - ✅ Support
crop
operations. - ✅ 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
. - Release.
Version 2.0.0 🏷️ planning
- Support for gravity configuration via
focusArea
operations. - 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.