diff --git a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v3/ImageImpl.java b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v3/ImageImpl.java index f4a9edb26c..e3042cd4f1 100644 --- a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v3/ImageImpl.java +++ b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v3/ImageImpl.java @@ -331,6 +331,7 @@ private void initNextGenerationDynamicMedia() { properties = resource.getValueMap(); String fileReference = properties.get("fileReference", String.class); String smartCrop = properties.get("smartCropRendition", String.class); + String modifiers = properties.get("imageModifiers", String.class); if (isNgdmImageReference(fileReference)) { int width = currentStyle.get(PN_DESIGN_RESIZE_WIDTH, DEFAULT_NGDM_ASSET_WIDTH); NextGenDMImageURIBuilder builder = new NextGenDMImageURIBuilder(nextGenDynamicMediaConfig, fileReference) @@ -339,6 +340,9 @@ private void initNextGenerationDynamicMedia() { if(StringUtils.isNotEmpty(smartCrop) && !StringUtils.equals(smartCrop, SMART_CROP_AUTO)) { builder.withSmartCrop(smartCrop); } + if (StringUtils.isNotEmpty(modifiers)) { + builder.withImageModifiers(modifiers); + } src = builder.build(); ngdmImage = true; hasContent = true; diff --git a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v3/NextGenDMImageURIBuilder.java b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v3/NextGenDMImageURIBuilder.java index ef8176ec3d..d944c064a9 100644 --- a/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v3/NextGenDMImageURIBuilder.java +++ b/bundles/core/src/main/java/com/adobe/cq/wcm/core/components/internal/models/v3/NextGenDMImageURIBuilder.java @@ -42,6 +42,8 @@ public class NextGenDMImageURIBuilder { private int height; private boolean preferWebp = true; + private String modifiers; + public NextGenDMImageURIBuilder(NextGenDynamicMediaConfig config, String fileReference) { this.config = config; this.fileReference = fileReference; @@ -84,6 +86,15 @@ public NextGenDMImageURIBuilder withPreferWebp(boolean preferWebp) { return this; } + /** + * Set extra image modifiers. + * @param modifiersStr + */ + public NextGenDMImageURIBuilder withImageModifiers(String modifiersStr) { + this.modifiers = modifiersStr; + return this; + } + /** * Use this to create a NextGen Dynamic Media Image URI. * @return a uri. @@ -124,6 +135,13 @@ public String build() { } uriBuilder.deleteCharAt(uriBuilder.length() - 1); } + if(StringUtils.isNotEmpty(this.modifiers)) { + if (this.modifiers.startsWith("&")) { + uriBuilder.append(this.modifiers); + } else { + uriBuilder.append("&" + this.modifiers); + } + } return uriBuilder.toString(); } LOGGER.info("Invalid fileReference or NGDMConfig. fileReference = {}", this.fileReference);