我们通过扩展AbstractImageServlet编写了一个自定义servlet,并将其注册到自定义选择器,我们重写了createLayer方法。从图像返回图层或从图像的原始再现中获取图层后,不会返回原始图像和图像的高度
Image img=new Image(imageContext.resource);
Layer layer=img.getLayer(true, true, true);
return layer;
或
Resource imgResource = imageContext.request.getResourceResolver()
.getResource(imagePath);
Layer layer=imgResource.getLayer(true, true, true);
return layer;
其中imagePath是图像原始再现的路径
DAM中原始图像再现的大小为2048×1100和220 KB
但是从原始节目获取图层后,servlet返回的图像大小为1280 * 687和292 KB
com.day.cq.wcm.foundation.Image类的getLayer方法不会返回原始绘制的完全相同的大小。
如何使原始图像的自然大小成为扩展AbstractImageServlet的自定义servlet?
答案 0 :(得分:1)
当上传的图片宽度超过1280像素时,我们将面临上述情况。 AbstractImageServlet.ImageContext的最大宽度为1280px。当您上传了宽度为2048像素的图像时,它已调整大小。 如果您尝试宽度小于1280像素的图像,则不会调整其大小。
但是,您必须更新系统配置中的一项服务和一项DAM资产工作流程步骤才能使其正常工作。
配置:Day CQ DAM缓冲图像缓存 属性:Max Dimension" 2048x2048"
工作流程步骤:DAM更新资产:处理缩略图: 启用Web的图像:宽度 - 2048和高度 - 2048.
有关详细信息,请查看以下链接:
https://helpx.adobe.com/experience-manager/kb/remove-web-rendition-dimension-limit.html
答案 1 :(得分:0)
还有另一种选择为原始呈现获取图层 - 当你有图像资源时,你可以做下一件事:
Asset asset = imageResource.adaptTo(Asset.class);
Rendition original = asset.getOriginal();
Layer layer = new Layer(original.getStream());