From 49bb31996a66f9c51f965ecbc767071b62bc51f2 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Wed, 17 Jan 2024 16:45:44 +0100 Subject: [PATCH] MediaHandlerConfig: Change default image quality to 85% (#34) --- changes.xml | 3 +++ .../handler/media/spi/MediaHandlerConfig.java | 2 +- ...sEnd2EndWebOptimizedImageDeliveryTest.java | 26 +++++++++---------- .../dam/DamUriTemplateRenditionTest.java | 4 +-- .../mediasource/dam/DamUriTemplateTest.java | 4 +-- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/changes.xml b/changes.xml index 9ab4a2f2..f676f28c 100644 --- a/changes.xml +++ b/changes.xml @@ -40,6 +40,9 @@ In Media Handler 1.x web renditions (starting with cq5dam.web. prefix) and all other renditions except thumbnails (starting with cq5dam.thumbnail. prefix) were processed.
The MediaHandlerConfig contains a new method getIncludeAssetAemRenditionsByDefault that controls this behavior and allows to switch to the previous setting. ]]> + MediaHandlerConfig: Change default image quality for lossy compression image (e.g. JPG) to 85%. In previous versions this was 98%. You can change the default value in the MediaHandlerConfig. + ]]> MediaFileServlet: Force Content-Disposition=attachment header for SVG files served by MediaFileServlet. Also ensure URLs to SVG images are always handled by MediaFileServlet. diff --git a/src/main/java/io/wcm/handler/media/spi/MediaHandlerConfig.java b/src/main/java/io/wcm/handler/media/spi/MediaHandlerConfig.java index a01c7fe7..5389258b 100644 --- a/src/main/java/io/wcm/handler/media/spi/MediaHandlerConfig.java +++ b/src/main/java/io/wcm/handler/media/spi/MediaHandlerConfig.java @@ -50,7 +50,7 @@ public abstract class MediaHandlerConfig implements ContextAwareService { /** * Default image quality for images with lossy compressions (e.g. JPEG). */ - public static final double DEFAULT_IMAGE_QUALITY = 0.98d; + public static final double DEFAULT_IMAGE_QUALITY = 0.85d; /** * Default value for JPEG quality. diff --git a/src/test/java/io/wcm/handler/media/impl/MediaHandlerImplImageFileTypesEnd2EndWebOptimizedImageDeliveryTest.java b/src/test/java/io/wcm/handler/media/impl/MediaHandlerImplImageFileTypesEnd2EndWebOptimizedImageDeliveryTest.java index 62fe3d38..5f22bc46 100644 --- a/src/test/java/io/wcm/handler/media/impl/MediaHandlerImplImageFileTypesEnd2EndWebOptimizedImageDeliveryTest.java +++ b/src/test/java/io/wcm/handler/media/impl/MediaHandlerImplImageFileTypesEnd2EndWebOptimizedImageDeliveryTest.java @@ -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&quality=98", + "/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&quality=85", ContentType.JPEG); } @@ -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&quality=98&width=80", + "/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&quality=85&width=80", ContentType.JPEG); } @@ -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&quality=98&width=50", + "/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&quality=85&width=50", ContentType.JPEG); } @@ -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&quality=98&width=50", + "/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&quality=85&width=50", ContentType.JPEG); } @@ -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&quality=98", + "/asset/delivery/" + getAssetId(asset) + "/sample.gif?preferwebp=true&quality=85", ContentType.GIF); } @@ -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&quality=98&width=80", + "/asset/delivery/" + getAssetId(asset) + "/sample.gif?preferwebp=true&quality=85&width=80", ContentType.GIF); } @@ -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&quality=98&width=50", + "/asset/delivery/" + getAssetId(asset) + "/sample.gif?c=25%2C0%2C50%2C50&preferwebp=true&quality=85&width=50", ContentType.GIF); } @@ -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&quality=98", + "/asset/delivery/" + getAssetId(asset) + "/sample.png?preferwebp=true&quality=85", ContentType.PNG); } @@ -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&quality=98&width=80", + "/asset/delivery/" + getAssetId(asset) + "/sample.png?preferwebp=true&quality=85&width=80", ContentType.PNG); } @@ -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&quality=98&width=50", + "/asset/delivery/" + getAssetId(asset) + "/sample.png?c=25%2C0%2C50%2C50&preferwebp=true&quality=85&width=50", ContentType.PNG); } @@ -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&quality=98", + "/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&quality=85", ContentType.JPEG); } @@ -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&quality=98&width=80", + "/asset/delivery/" + getAssetId(asset) + "/sample.jpg?preferwebp=true&quality=85&width=80", ContentType.JPEG); } @@ -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&quality=98&width=50", + "/asset/delivery/" + getAssetId(asset) + "/sample.jpg?c=25%2C0%2C50%2C50&preferwebp=true&quality=85&width=50", ContentType.JPEG); } diff --git a/src/test/java/io/wcm/handler/mediasource/dam/DamUriTemplateRenditionTest.java b/src/test/java/io/wcm/handler/mediasource/dam/DamUriTemplateRenditionTest.java index ba3acb68..f614e091 100644 --- a/src/test/java/io/wcm/handler/mediasource/dam/DamUriTemplateRenditionTest.java +++ b/src/test/java/io/wcm/handler/mediasource/dam/DamUriTemplateRenditionTest.java @@ -139,7 +139,7 @@ void testOriginal_WebOptimizedImageDelivery() { .build(); assertUriTemplate(media.getRendition(), SCALE_WIDTH, 192, 120, - "/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&quality=98&width={width}"); + "/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&quality=85&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"); } @@ -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&quality=98&width={width}"); + "/asset/delivery/" + assetId + "/sample.jpg?c=16%2C0%2C160%2C120&preferwebp=true&quality=85&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"); } diff --git a/src/test/java/io/wcm/handler/mediasource/dam/DamUriTemplateTest.java b/src/test/java/io/wcm/handler/mediasource/dam/DamUriTemplateTest.java index 92d49dc7..34f24077 100644 --- a/src/test/java/io/wcm/handler/mediasource/dam/DamUriTemplateTest.java +++ b/src/test/java/io/wcm/handler/mediasource/dam/DamUriTemplateTest.java @@ -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&quality=98&width={width}"); + "/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&quality=85&width={width}"); assertUriTemplate(media, SCALE_WIDTH, 100, 50, - "/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&quality=98&width={width}"); + "/asset/delivery/" + assetId + "/sample.jpg?preferwebp=true&quality=85&width={width}"); assertUriTemplate(media, SCALE_HEIGHT, 100, 50, "/content/dam/sample.jpg/_jcr_content/renditions/original.image_file.0.{height}.file/sample.jpg"); }