Image Rendering
Overview
AEM has default servlets for handling page and component level images. However, the default image servlets only allow for a single image per page or component; the custom AEM Library Image Servlet adds the ability to provide additional selectors to specify named images and a width value for resizing the rendered image.
Pages
The Page Properties dialog can be customized to add additional named images as follows:
<secondimage jcr:primaryType="cq:Widget" cropParameter="./secondimage/imageCrop" ddGroups="[media]" fileNameParameter="./secondimage/fileName" fileReferenceParameter="./secondimage/fileReference" mapParameter="./secondimage/imageMap" name="./secondimage/file" renditionSuffix="/_jcr_content/renditions/original" requestSuffix=".img.secondimage.png" rotateParameter="./secondimage/imageRotate" title="Second Image" xtype="html5smartimage" />
The following URLs can be used to access the default and named images for a given page. The corresponding AEM Library page decorator method names are listed as well.
URL | Image Name | Width | Method Name |
---|---|---|---|
/content/home.img.png | “image” (Default) | Full | getImageSource() |
/content/home.img.100.png | “image” (Default) | 100 | getImageSource(100) |
/content/home.img.secondimage.png | “secondimage” | Full | getImageSource("secondimage") |
/content/home.img.secondimage.100.png | “secondimage” | 100 | getImageSource("secondimage", 100) |
As illustrated in the table above, “image” is the default name for page images (in accordance with the foundation page dialog definition).
Components
Component-level images are accessed in the same manner as page images; the examples below illustrate how the dialog.xml aligns with the image URL.
Single image:
<image jcr:primaryType="cq:Widget" cropParameter="./image/imageCrop" ddGroups="[media]" fileNameParameter="./image/fileName" fileReferenceParameter="./image/fileReference" mapParameter="./image/imageMap" name="./image/file" renditionSuffix="/_jcr_content/renditions/original" requestSuffix=".img.image.png" rotateParameter="./image/imageRotate" title="Image" xtype="html5smartimage" />
Named image (for adding multiple images to a component):
<secondimage jcr:primaryType="cq:Widget" cropParameter="./secondimage/imageCrop" ddGroups="[media]" fileNameParameter="./secondimage/fileName" fileReferenceParameter="./secondimage/fileReference" mapParameter="./secondimage/imageMap" name="./secondimage/file" renditionSuffix="/_jcr_content/renditions/original" requestSuffix=".img.secondimage.png" rotateParameter="./secondimage/imageRotate" title="Second Image" xtype="html5smartimage" />
The following URLs can be used to access the default and named images for a given component. The corresponding AEM Library component (i.e. node) decorator method names are listed as well.
URL | Image Name | Width | Method Name |
---|---|---|---|
/content/home/jcr:content/par/component.img.png | “image” (Default) | Full | getImageSource() |
/content/home/jcr:content/par/component.img.100.png | “image” (Default) | 100 | getImageSource(100) |
/content/home/jcr:content/par/component.img.secondimage.png | “secondimage” | Full | getImageSource("secondimage") |
/content/home/jcr:content/par/component.img.secondimage.100.png | “secondimage” | 100 | getImageSource("secondimage", 100) |
As with pages, we specify “image” as the default image name to align with the page-level convention.