Install
Works with Drupal: ^11.3Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
First alpha release of Embedded Attribution. It writes the photographer, copyright and license into every image style derivative, as IPTC, XMP and EXIF metadata, so that the credit travels with every downloaded copy.
Alpha: try it on a test or staging site, not yet on a production site. Please report what you find in the issue queue.
What it does
- Copies the maker, rights, source, identifier and licence link of a JPEG original into its JPEG, WebP and AVIF derivatives, including Drupal 11's own AVIF image styles. What the original says always wins.
- Fills what the original lacks from fields you choose per media type or content type: text, link and Attribution fields. Only what an anonymous visitor may view is used.
- Writes the image's alt text (IPTC Alt Text (Accessibility)), a credit line and a licensor URL, the fields Google Images reads.
- By default removes every other piece of metadata from derivatives (GPS position, camera serial number, dates, owner), which ImageMagick otherwise copies from the original. The original file is never changed.
- Refreshes derivatives when the fields change, and offers a refresh after a change of the settings or an update.
- Shows on the edit form what would be written and what each derivative carries, read from the file.
- Writes before C2PA Sign signs a derivative, so the attribution is inside the signature.
Requirements
Drupal 11.3 or later, PHP 8.3 or later. Media and Attribution are optional.
Tested
Unit, kernel and exiftool 13.55 test suites on Drupal 11.3 and 11.4, with GD and with ImageMagick; the drupal.org pipeline runs all three.
Known limitations
- Only JPEG originals; PNG and GIF originals are left alone.
- Only image style derivatives: images pasted into body text and downloads of the original are not covered.
- A change of permissions that is not a save of the content is not seen; use the refresh button on the settings page.
AI-Assisted: Yes. I used an AI coding assistant (Claude) to write the code, the tests and these notes. I reviewed, ran and checked everything myself.