{"id":21588821,"url":"https://github.com/somehow-digital/typo3-media-processing","last_synced_at":"2025-04-10T21:36:30.787Z","repository":{"id":163024443,"uuid":"636431986","full_name":"somehow-digital/typo3-media-processing","owner":"somehow-digital","description":"\"Media Processing\" for TYPO3 integrates various image processing libraries and SaaS cloud services into TYPO3 by leveraging their APIs to process images.","archived":false,"fork":false,"pushed_at":"2025-04-03T13:55:18.000Z","size":171,"stargazers_count":9,"open_issues_count":5,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-03T14:40:56.781Z","etag":null,"topics":["image-processing","typo3","typo3-extension"],"latest_commit_sha":null,"homepage":"https://somehow.digital","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/somehow-digital.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-04T20:47:50.000Z","updated_at":"2025-02-05T17:06:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"f6f94252-3fab-4f6a-9185-d8edd4ba3efe","html_url":"https://github.com/somehow-digital/typo3-media-processing","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somehow-digital%2Ftypo3-media-processing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somehow-digital%2Ftypo3-media-processing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somehow-digital%2Ftypo3-media-processing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somehow-digital%2Ftypo3-media-processing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/somehow-digital","download_url":"https://codeload.github.com/somehow-digital/typo3-media-processing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248304740,"owners_count":21081509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["image-processing","typo3","typo3-extension"],"created_at":"2024-11-24T16:11:31.221Z","updated_at":"2025-04-10T21:36:30.777Z","avatar_url":"https://github.com/somehow-digital.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Media Processing for TYPO3\n\n`Media Processing` for TYPO3 integrates various image processing\nlibraries and SaaS cloud services into TYPO3 by leveraging their APIs to\nprocess images. This  basically replaces the need for local image processing\nlibraries like `ImageMagick` for image processing operations.\n\n**Integrations**\n\n| name                                                      | resize | crop | focus | sign |\n|:----------------------------------------------------------|:------:|:----:|:-----:|:----:|\n| [**imgproxy**](https://imgproxy.net/)                     |   🟢   |  🟢  |  🟢   |  🟢  |\n| [**imagor**](https://github.com/cshum/imagor)             |   🟢   |  🟢  |  🟡   |  🟢  |\n| [**thumbor**](https://github.com/thumbor/thumbor)         |   🟢   |  🟢  |  🟡   |  🟢  |\n| [**optimole.com** ](https://optimole.com/)                |   🟢   |  🟢  |  🟢   |  🔴  |\n| [**bunny.net** ](https://bunny.net/)                      |   🟢   |  🟢  |  🔴   |  🟢  |\n| [**cloudflare.com** ](https://developers.cloudflare.com/) |   🟢   |  🟢  |  🟢   |  🔴  |\n| [**imagekit.io** ](https://imagekit.io/)                  |   🟢   |  🟢  |  🟡   |  🟢  |\n| [**sirv.com** ](https://sirv.com/)                        |   🟢   |  🟢  |  🟡   |  🔴  |\n| [**imgix.com** ](https://imgix.com/)                      |   🟢   |  🟢  |  🟡   |  🟢  |\n| [**cloudinary.com** ](https://cloudinary.com/)            |   🟢   |  🟢  |  🟡   |  🟢  |\n| [**cloudimage.io** ](https://cloudimage.io/)              |   🟢   |  🟢  |  🟡   |  🟢  |\n| [**gumlet.com** ](https://www.gumlet.com/)                |   🟢   |  🟢  |  🟢   |  🟢  |\n\n* `resize`: Integration supports resize operations.\n* `crop`: Integration supports crop operations.\n* `focus`: Integration supports gravity or focus points. (experimental)\n* `sign`: Integration supports URL signing.\n\n🟢 supported and integrated  \n🟡 supported but not integrated  \n🔴 unsupported  \n\n## Installation 📦\n\n**Composer Mode**\n\nInstall the [`somehow-digital/typo3-media-processing`](https://packagist.org/packages/somehow-digital/typo3-media-processing) \npackage from the `Composer Package Repository`.\n\n```bash\ncomposer require somehow-digital/typo3-media-processing\n```\n\n**Legacy Mode**\n\nInstall the [`media_processing`](https://extensions.typo3.org/extension/media_processing/)\nextension from the `TYPO3 Extension Repository`.\n\n### Requirements\n\n* TYPO3 `12`-`13`\n* PHP `8.1`-`8.4`\n* PHP [`openssl`](https://www.php.net/manual/en/book.openssl.php) extension\n\n## Setup ⚙️\n\nBy choosing and configuring one of the available image processing\nintegrations, TYPO3 will use the configured integration to process\nimages instead of using the local image processing library.\n\n### Configuration\n\nExtension configuration is located in the TYPO3 backend under\n`Admin Tools → Settings → Extension Configuration`.\n\n**common** `common`\n\n| option      | type    | description                                      | default |\n|-------------|---------|--------------------------------------------------|---------|\n| integration | options | Service integration to use for image processing. | `null`  |\n| storage     | bool    | Enable local storage of processed files.         | `false` |\n| backend     | bool    | Enable image processing in the backend.          | `true`  |\n| frontend    | bool    | Enable image processing in the frontend.         | `true`  |\n\n**imgproxy** `integration.imgproxy`\n\n| option         | type    | description                                 | default |\n|----------------|---------|---------------------------------------------|---------|\n| api_endpoint   | string  | The API endpoint of the imgproxy service.   | `null`  |\n| source_loader  | options | The source loader of the imgproxy service.  | uri     |\n| source_uri     | string  | The origin host URL where files are stored. | `null`  |\n| signature      | bool    | Enable signature of the imgproxy service.   | `false` |\n| signature_key  | string  | The signature key of the imgproxy service.  | `null`  |\n| signature_salt | string  | The signature salt of the imgproxy service. | `null`  |\n| signature_size | int     | The signature size of the imgproxy service. | `null`  |\n| encryption     | bool    | Enable encryption of the imgproxy service.  | `false` |\n| encryption_key | string  | The encryption key of the imgproxy service. | `null`  |\n\nSee also the official [`imgproxy` documentation](https://docs.imgproxy.net/)\nfor more information.\n\n**imagor** `integration.imagor`\n\n| option              | type    | description                                    | default |\n|---------------------|---------|------------------------------------------------|---------|\n| api_endpoint        | string  | The API endpoint of the imagor service.        | `null`  |\n| source_loader       | options | The source loader of the imagor service.       | uri     |\n| source_uri          | string  | The origin host URL where files are stored.    | `null`  |\n| signature           | bool    | Enable signature of the imagor service.        | `false` |\n| signature_key       | string  | The signature key of the imagor service.       | `null`  |\n| signature_algorithm | options | The signature algorithm of the imagor service. | sha1    |\n| signature_length    | int     | The signature size of the imagor service.      | `null`  |\n\nSee also the official [`imagor` documentation](https://github.com/cshum/imagor)\nfor more information.\n\n**thumbor** `integration.thumbor`\n\n| option              | type    | description                                     | default |\n|---------------------|---------|-------------------------------------------------|---------|\n| api_endpoint        | string  | The API endpoint of the thumbor service.        | `null`  |\n| source_loader       | options | The source loader of the thumbor service.       | uri     |\n| source_uri          | string  | The origin host URL where files are stored.     | `null`  |\n| signature           | bool    | Enable signature of the thumbor service.        | `false` |\n| signature_key       | string  | The signature key of the thumbor service.       | `null`  |\n| signature_algorithm | options | The signature algorithm of the thumbor service. | sha1    |\n| signature_length    | int     | The signature size of the thumbor service.      | `null`  |\n\nSee also the official [`thumbor` documentation](https://thumbor.readthedocs.io/)\nfor more information.\n\n**optimole.com** `integration.optimole`\n\n| option     | type   | description                                 | default |\n|------------|--------|---------------------------------------------|---------|\n| api_key    | string | The API key of the optimole service.        | `null`  |\n| source_uri | string | The origin host URL where files are stored. | `null`  |\n\nSee also the official [`optimole` documentation](https://docs.optimole.com/)\nfor more information.\n\n**bunny.net** `integration.bunny`\n\n| option        | type   | description                                 | default |\n|---------------|--------|---------------------------------------------|---------|\n| api_endpoint  | string | The Pull Zone URL of the bunny.net service. | `null`  |\n| source_uri    | string | The origin host URL where files are stored. | `null`  |\n| signature     | bool   | Enable signature of the bunny.net service.  | `false` |\n| signature_key | string | The signature key of the bunny.net service. | `null`  |\n\nSee also the official [`bunny.net` documentation](https://docs.bunny.net/docs/)\nfor more information.\n\n**cloudflare.com** `integration.cloudflare`\n\n| option       | type   | description                                 | default |\n|--------------|--------|---------------------------------------------|---------|\n| api_endpoint | string | The API endpoint of the cloudflare service. | `null`  |\n| source_uri   | string | The origin host URL where files are stored. | `null`  |\n\nSee also the official [`cloudflare` documentation](https://developers.cloudflare.com/images/image-resizing/)\nfor more information.\n\n**imagekit.io** `integration.imagekit`\n\n| option        | type   | description                                 | default |\n|---------------|--------|---------------------------------------------|---------|\n| api_endpoint  | string | The API endpoint of the imagekit service.   | `null`  |\n| source_uri    | string | The origin host URL where files are stored. | `null`  |\n| signature     | bool   | Enable signature of the imagekit service.   | `false` |\n| signature_key | string | The signature key of the imagekit service.  | `null`  |\n\nSee also the official [`imagekit.io` documentation](https://docs.imagekit.io/)\nfor more information.\n\n**sirv.com** `integration.sirv`\n\n| option       | type   | description                                 | default |\n|--------------|--------|---------------------------------------------|---------|\n| api_endpoint | string | The API endpoint of the sirv service.       | `null`  |\n| source_uri   | string | The origin host URL where files are stored. | `null`  |\n\nSee also the official [`sirv.com` documentation](https://sirv.com/help/articles/dynamic-imaging/)\nfor more information.\n\n**imgix.com** `integration.imgix`\n\n| option        | type    | description                                 | default |\n|---------------|---------|---------------------------------------------|---------|\n| api_endpoint  | string  | The API endpoint of the imgix service.      | `null`  |\n| source_loader | options | The source loader of the imgix service.     | folder  |\n| source_uri    | string  | The origin host URL where files are stored. | `null`  |\n| signature     | bool    | Enable signature of the imgix service.      | `false` |\n| signature_key | string  | The signature key of the imgix service.     | `null`  |\n\nSee also the official [`imgix.com` documentation](https://docs.imgix.com/)\nfor more information.\n\n**cloudinary.com** `integration.cloudinary`\n\n| option              | type    | description                                        | default |\n|---------------------|---------|----------------------------------------------------|---------|\n| api_endpoint        | string  | The API endpoint of the cloudinary service.        | `null`  |\n| delivery_mode       | options | The source loader of the cloudinary service.       | fetch   |\n| source_uri          | string  | The origin host URL where files are stored.        | `null`  |\n| signature           | bool    | Enable signature of the cloudinary service.        | `false` |\n| signature_key       | string  | The signature key of the cloudinary service.       | `null`  |\n| signature_algorithm | options | The signature algorithm of the cloudinary service. | sha1    |\n\nSee also the official [`cloudinary.com` documentation](https://cloudinary.com/documentation/)\nfor more information.\n\n**cloudimage.io** `integration.cloudimage`\n\n| option              | type    | description                                        | default |\n|---------------------|---------|----------------------------------------------------|---------|\n| api_endpoint        | string  | The API endpoint of the cloudimage service.        | `null`  |\n| source_uri          | string  | The origin host URL where files are stored.        | `null`  |\n| signature           | bool    | Enable signature of the cloudinary service.        | `false` |\n| signature_key       | string  | The signature key of the cloudinary service.       | `null`  |\n\nSee also the official [`cloudimage.io` documentation](https://docs.cloudimage.io/)\nfor more information.\n\n**gumlet.com** `integration.gumlet`\n\n| option        | type   | description                                  | default |\n|---------------|--------|----------------------------------------------|---------|\n| api_endpoint  | string | The Gumlet URL of the gumlet.com service.    | `null`  |\n| signature     | bool   | Enable signature of the gumlet.com service.  | `false` |\n| signature_key | string | The signature key of the gumlet.com service. | `null`  |\n\nSee also the official [`gumlet.com` documentation](https://docs.gumlet.com/)\nfor more information.\n\n## Usage 🪄\n\n### Backend\n\nThe backend `Invalidate processed media` action can be used to invalidate\nprocessed files for the active media processing integration.\n\n### CLI\n\nThe TYPO3 CLI `cleanup:invalidatemedia` command can be used to invalidate\nprocessed files for the active media processing integration.\n\n`vendor/bin/typo3 cleanup:invalidatemedia`\n\n## Support 🛟\n\n* Discord\n* [Discussions](https://github.com/somehow-digital/typo3-media-processing/discussions)\n* [Issues](https://github.com/somehow-digital/typo3-media-processing/issues)\n\n## Roadmap 🚧\n\nVersion **1.0.0** 🏷️ `developing`\n\n* ✅ Support for TYPO3 `12`.\n* ✅ Support for TYPO3 `13`.\n* ✅ Support `resize` operations.\n* ✅ Support `crop` operations.\n* ✅ Backend toolbar action and CLI command for processed media invalidation.\n* ✅ Integration for [**imgproxy** `library`](https://github.com/imgproxy/imgproxy).\n* ✅ Integration for [**imagor** `library`](https://github.com/cshum/imagor).\n* ✅ Integration for [**thumbor** `library`](https://github.com/thumbor/thumbor).\n* ✅ Integration for [**optimole.com** `service`](https://optimole.com/).\n* ✅ Integration for [**bunny.net** `service`](https://bunny.net/).\n* ✅ Integration for [**cloudflare.com** `service`](https://developers.cloudflare.com/images/).\n* ✅ Integration for [**imagekit.io** `service`](https://imagekit.io/).\n* ✅ Integration for [**sirv.com** `service`](https://sirv.com/).\n* ✅ Integration for [**imgix.com** `service`](https://imgix.com/).\n* ✅ Integration for [**cloudinary.com** `service`](https://cloudinary.com/).\n* ✅ Integration for [**cloudimage.io** `service`](https://www.cloudimage.io/).\n* ✅ Integration for [**gumlet.com** `service`](https://www.gumlet.com/).\n* Release.\n\nVersion **2.0.0** 🏷️ `planning`\n\n* Support for gravity configuration via `focusArea` operations.\n* Support for manual and smart gravity configuration.\n* Integration for [**glide** `library`](https://glide.thephpleague.com/).\n* Integration for [**imaginary** `library`](https://github.com/h2non/imaginary).\n* Integration for [**imageflow** `library`](https://www.imageflow.io/).\n* Integration for [**weserv** `library`](https://images.weserv.nl/).\n* Integration for [**fastly.com** `service`](https://fastly.com/).\n* Integration for [**shortpixel.com** `service`](https://shortpixel.com/).\n* Integration for [**imagify.io** `service`](https://imagify.io/).\n* Integrations per site.\n* Send HEAD requests to speed up image generation.\n\nVersion **3.0.0** 🏷️ `researching`\n\n* Integration for more image processing libraries/services.\n* Integration for video processing libraries/services.\n\n---\n\n[`somehow.digital`](https://somehow.digital/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsomehow-digital%2Ftypo3-media-processing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsomehow-digital%2Ftypo3-media-processing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsomehow-digital%2Ftypo3-media-processing/lists"}