我们通过扩展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,大小为220KB
但servlet从原始格式副本中获取图层后返回的图像大小为1280*687和292 KB
com.day.cq.wcm.foundation.Image类的getLayer方法不返回与原始格式副本完全相同的大小。
我们如何通过扩展AbstractImageServlet的自定义servlet来获得原始图像的自然大小?
发布于 2017-03-14 19:46:08
当上传的图片宽度超过1280px时,我们将面临上述情况。AbstractImageServlet.ImageContext的最大宽度为1280px。当你上传了一张宽度为2048px的图片时,它已经调整了大小。如果您尝试宽度小于1280px的图像,则不会调整其大小。
但是,您必须更新系统配置中的一个服务和一个DAM资产工作流步骤才能使其工作。
配置:天CQ DAM缓冲图像缓存属性:最大尺寸"2048x2048“
工作流步骤: DAM更新资源:处理缩略图:启用Web的图像:宽度- 2048和高度- 2048。
有关更多详细信息,请查看以下链接:
https://helpx.adobe.com/experience-manager/kb/remove-web-rendition-dimension-limit.html
发布于 2016-03-30 15:22:55
还有另一个选项来获取图层进行原始呈现-当你有图像资源时,你可以做下一件事:
Asset asset = imageResource.adaptTo(Asset.class);
Rendition original = asset.getOriginal();
Layer layer = new Layer(original.getStream());https://stackoverflow.com/questions/36299688
复制相似问题