Skip to content

Commit

Permalink
web optimized image delivery
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanseifert committed Jan 17, 2024
1 parent f9788e4 commit dff4abd
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 18 deletions.
11 changes: 11 additions & 0 deletions src/main/java/io/wcm/handler/mediasource/dam/impl/DamContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import io.wcm.handler.mediasource.dam.impl.dynamicmedia.NamedDimension;
import io.wcm.handler.mediasource.dam.impl.ngdm.WebOptimizedImageDeliveryParams;
import io.wcm.handler.mediasource.dam.impl.ngdm.WebOptimizedImageDeliveryService;
import io.wcm.wcm.commons.contenttype.ContentType;

/**
* Context objects require in DAM support implementation.
Expand Down Expand Up @@ -204,6 +205,16 @@ public boolean isWebOptimizedImageDeliveryEnabled() {
* @return Delivery URL or null if not supported or not enabled
*/
public @Nullable String getWebOptimizedImageDeliveryUrl(@NotNull WebOptimizedImageDeliveryParams params) {

// set image quality.
Double quality = this.mediaArgs.getImageQualityPercentage();
if (quality == null) {
// use JPEG content type by default, because preferwebp is set by default and is a lossy compression,
// so we always need a quality value
quality = this.mediaHandlerConfig.getDefaultImageQuality(ContentType.JPEG);
}
params.quality((int)Math.round(quality * 100d));

return webOptimizedImageDeliveryService.getDeliveryUrl(asset, params);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ void setUp() {
void testAsset_JPEG_Original() {
Asset asset = createSampleAsset("/filetype/sample.jpg", ContentType.JPEG);
buildAssertMedia(asset, 100, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true",
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&quality=98",
ContentType.JPEG);
}

Expand All @@ -67,7 +67,7 @@ void testAsset_JPEG_Original_WebOptimizedImageDeliveryDisabled() {
void testAsset_JPEG_Rescale() {
Asset asset = createSampleAsset("/filetype/sample.jpg", ContentType.JPEG);
buildAssertMedia_Rescale(asset, 80, 40,
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&width=80",
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&quality=98&width=80",
ContentType.JPEG);
}

Expand All @@ -76,7 +76,7 @@ void testAsset_JPEG_Rescale() {
void testAsset_JPEG_AutoCrop() {
Asset asset = createSampleAsset("/filetype/sample.jpg", ContentType.JPEG);
buildAssertMedia_AutoCrop(asset, 50, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&width=50",
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&quality=98&width=50",
ContentType.JPEG);
}

Expand All @@ -85,7 +85,7 @@ void testAsset_JPEG_AutoCrop() {
void testAsset_JPEG_AutoCrop_ImageQuality() {
Asset asset = createSampleAsset("/filetype/sample.jpg", ContentType.JPEG);
buildAssertMedia_AutoCrop(asset, 50, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&width=50",
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&quality=60&width=50",
ContentType.JPEG, 0.6d);
}

Expand All @@ -95,7 +95,7 @@ void testAsset_JPEG_CropWithExplicitRendition() {
Asset asset = createSampleAsset("/filetype/sample.jpg", ContentType.JPEG);
context.create().assetRendition(asset, "square.jpg", 50, 50, ContentType.JPEG);
buildAssertMedia_AutoCrop(asset, 50, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&width=50",
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&quality=98&width=50",
ContentType.JPEG);
}

Expand All @@ -104,7 +104,7 @@ void testAsset_JPEG_CropWithExplicitRendition() {
void testAsset_GIF_Original() {
Asset asset = createSampleAsset("/filetype/sample.gif", ContentType.GIF);
buildAssertMedia(asset, 100, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.gif?preferwebp=true",
"/asset/delivery/" + getAssetId(asset) + "/sample.gif?preferwebp=true&quality=98",
ContentType.GIF);
}

Expand All @@ -113,7 +113,7 @@ void testAsset_GIF_Original() {
void testAsset_GIF_Rescale() {
Asset asset = createSampleAsset("/filetype/sample.gif", ContentType.GIF);
buildAssertMedia_Rescale(asset, 80, 40,
"/asset/delivery/" + getAssetId(asset) + "/sample.gif?preferwebp=true&width=80",
"/asset/delivery/" + getAssetId(asset) + "/sample.gif?preferwebp=true&quality=98&width=80",
ContentType.GIF);
}

Expand All @@ -122,7 +122,7 @@ void testAsset_GIF_Rescale() {
void testAsset_GIF_AutoCrop() {
Asset asset = createSampleAsset("/filetype/sample.gif", ContentType.GIF);
buildAssertMedia_AutoCrop(asset, 50, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.gif?c=25%2C0%2C50%2C50&preferwebp=true&width=50",
"/asset/delivery/" + getAssetId(asset) + "/sample.gif?c=25%2C0%2C50%2C50&preferwebp=true&quality=98&width=50",
ContentType.GIF);
}

Expand All @@ -131,7 +131,7 @@ void testAsset_GIF_AutoCrop() {
void testAsset_PNG_Original() {
Asset asset = createSampleAsset("/filetype/sample.png", ContentType.PNG);
buildAssertMedia(asset, 100, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.png?preferwebp=true",
"/asset/delivery/" + getAssetId(asset) + "/sample.png?preferwebp=true&quality=98",
ContentType.PNG);
}

Expand All @@ -140,7 +140,7 @@ void testAsset_PNG_Original() {
void testAsset_PNG_Rescale() {
Asset asset = createSampleAsset("/filetype/sample.png", ContentType.PNG);
buildAssertMedia_Rescale(asset, 80, 40,
"/asset/delivery/" + getAssetId(asset) + "/sample.png?preferwebp=true&width=80",
"/asset/delivery/" + getAssetId(asset) + "/sample.png?preferwebp=true&quality=98&width=80",
ContentType.PNG);
}

Expand All @@ -149,7 +149,7 @@ void testAsset_PNG_Rescale() {
void testAsset_PNG_AutoCrop() {
Asset asset = createSampleAsset("/filetype/sample.png", ContentType.PNG);
buildAssertMedia_AutoCrop(asset, 50, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.png?c=25%2C0%2C50%2C50&preferwebp=true&width=50",
"/asset/delivery/" + getAssetId(asset) + "/sample.png?c=25%2C0%2C50%2C50&preferwebp=true&quality=98&width=50",
ContentType.PNG);
}

Expand All @@ -158,7 +158,7 @@ void testAsset_PNG_AutoCrop() {
void testAsset_TIFF_Original() {
Asset asset = createSampleAsset("/filetype/sample.tif", ContentType.TIFF);
buildAssertMedia(asset, 100, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true",
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&quality=98",
ContentType.JPEG);
}

Expand All @@ -167,7 +167,7 @@ void testAsset_TIFF_Original() {
void testAsset_TIFF_Rescale() {
Asset asset = createSampleAsset("/filetype/sample.tif", ContentType.TIFF);
buildAssertMedia_Rescale(asset, 80, 40,
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&width=80",
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&quality=98&width=80",
ContentType.JPEG);
}

Expand All @@ -176,7 +176,7 @@ void testAsset_TIFF_Rescale() {
void testAsset_TIFF_AutoCrop() {
Asset asset = createSampleAsset("/filetype/sample.tif", ContentType.TIFF);
buildAssertMedia_AutoCrop(asset, 50, 50,
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&width=50",
"/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&quality=98&width=50",
ContentType.JPEG);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ void testOriginal_WebOptimizedImageDelivery() {
.build();

assertUriTemplate(media.getRendition(), SCALE_WIDTH, 192, 120,
"/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&width={width}");
"/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&quality=98&width={width}");
assertUriTemplate(media.getRendition(), SCALE_HEIGHT, 192, 120,
"/content/dam/folder1/sample.jpg/_jcr_content/renditions/original.image_file.0.{height}.file/sample.jpg");
}
Expand Down Expand Up @@ -184,7 +184,7 @@ void test4_3_WebOptimizedImageDelivery() {
.build();

assertUriTemplate(media.getRendition(), SCALE_WIDTH, 160, 120,
"/asset/delivery/" + assetId + "/sample.jpg?c=16%2C0%2C160%2C120&preferwebp=true&width={width}");
"/asset/delivery/" + assetId + "/sample.jpg?c=16%2C0%2C160%2C120&preferwebp=true&quality=98&width={width}");
assertUriTemplate(media.getRendition(), SCALE_HEIGHT, 160, 120,
"/content/dam/folder1/sample.jpg/_jcr_content/renditions/original.image_file.0.{height}.16,0,176,120.file/sample.jpg");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@ void testGetUriTemplate_WebOptimizedImageDelivery() {
Media media = mediaHandler.get(asset.getPath()).build();

assertUriTemplate(media, CROP_CENTER, 100, 50,
"/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&width={width}");
"/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&quality=98&width={width}");
assertUriTemplate(media, SCALE_WIDTH, 100, 50,
"/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&width={width}");
"/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&quality=98&width={width}");
assertUriTemplate(media, SCALE_HEIGHT, 100, 50,
"/content/dam/sample.jpg/_jcr_content/renditions/original.image_file.0.{height}.file/sample.jpg");
}
Expand Down

0 comments on commit dff4abd

Please sign in to comment.