Images
Here you will find information regarding how images that are uploaded via Digital Writer (or Binary Service Lite) are handled, stored and accessed. This is a “general” documentation. Details of how to setup and configure the Digital Writer and it’s services in regards to image handling are not covered here.
MIME types supported
As-is the Digital Writer supports image/jpeg,image/gif,image/png MIME types. The max size restriction of an image being uploaded is configurable per MIME type.
Storage
The original image is stored in a S3 bucket not publicly accessible. In addition a smaller version, a preview, of the image will be created and stored in the S3 bucket. The Digital Writer can be configured to also create a thumb derivative of the image in the bucket.
When the image gets published, a copy of the original image, for which all metadata is removed, is uploaded to another, public, S3 bucket (used for front-end rendering).
For every image uploaded, a metadata document is stored in Open Content. If the Digital Writer is configured to store the original image in Open Content, the image will be stored as the primary file (in addition to the image being stored on a S3 bucket). Otherwise the primary file will point to the metadata document. In addition, a preview and a thumb of the image is normally also uploaded to Open Content.
Identification
The image is identified by a calculated (hashed) and unique file name (i.e. not the image's original name), e.g. “0GUpOh076jJ9hgbe47zH-gZ0sx4.jpg”.
The correspondent metadata document in Open Content is given a UUID (UUID v5) that is created using the image's file given uri (x-im/image/{filename
}, e.g. “9db2f917-d397-484a-8837-519f067ed4f2”. By being able to calculate the UUID using the image’s file name the Digital Writer can avoid uploading duplicates of the same image by checking if the image already exists in Open Content.
Metadata
An uploaded image will always be paired with a metadata document in Infomaker NewsML format in Open Content. The Digital Writer will extract a subset of the available metadata that is actually stored on the image binary.
Labels
Fields
Mapped metadata fields
Description
ImageDescription, Caption-Abstract
xmp-dc:description, iptc:caption-abstract
Creator
Creator, By-line
xmp-dc:creator, iptc:by-line
Credit
Credit
xmp-photoshop:credit, iptc:credit
Instructions
Instructions, SpecialInstructions
xmp-photoshop:instructions, iptc:specialinstructions
Object name (original file name)
ObjectName, Title
xmp-dc:title, iptc:objectname
Photo date
DateCreated
xmp-photoshop:datecreated, iptc:datecreated
Source (not used in Writer as-is)
Credit
xmp-photoshop:source, iptc:source
In the generated metadata document for the image, the file name is specified by the <fileName>
element. The UUID is specified by the guid
attribute for <newsItem>
element.
When an image is referenced (used) in an article, the file name is specified as the last component of the uri
attribute of the <link rel=”self” type=”x-im/image” …>
element. The UUID is found as the attribute uuid
on the <object type=”x-im/image” …>
element. E.g.
Add metadata when uploading an image
By supplying metadata as a query parameter to the url of the image to upload (or to the file upload url used), metadata can be added to image and corresponding newsitem. The query parameter name must be metadata
and the value must be in the format described below. Note that the value must be a json string that is uri encoded.
And the above json would then be used as query parameter with the format as specified below;
```http request http://test.com?metadata="%7B%22ImageDescription%22%3A%22Hello World%22%2C%22By-line%22%3A%22John Doe%22%7D"
{protocol}://{imgixhostname}/1k5EJVdLeZKqTpKbl-ArSF-bna0.png
{protocol}://{imenginehostname}/imengine/image.php?uuid=133059c9-70ba-5806-a843-318c1a00d433
https://s3-{region}.amazonaws.com/{bucket}/{filename}
{protocol}://{opencontenthosname}:{port}/opencontent/objects/{uuid}/files/preview
{protocol}://{opencontenthosname}:{port}/opencontent/objects/{uuid}/files/thumb
{protocol}://{opencontenthosname}:{port}/opencontent/objects/{uuid}
{protocol}://{oc-alias}.proxy.infomaker.io
```
Last updated