DAM Asset Renditions-获取cq5dam.thumbnail.48.48.png格式表,但需要原始格式表

时间:2019-03-22 11:06:06

标签: aem

String itemPath = "/content/dam/global-abc/mcos/benefra/nl/custom/product-images/25-nl-107855/fact3.jpg";

String thumbnailUrl = itemPath;

if (assetManager != null) {                        
   Asset asset = assetManager.getAsset(itemPath);

   thumbnailUrl = asset.listRenditions().hasNext() ?
                  asset.listRenditions().next().getPath() : itemPath;

}

asset.listRenditions()。next()。getPath()给出/content/dam/global-abc/mcos/benefra/nl/custom/product-images/25-nl-107855/fact3.jpg /jcr:content/renditions/cq5dam.thumbnail.48.48.png这会降低UI端图像的清晰度。需要提高分辨率或获取原始图像

1 个答案:

答案 0 :(得分:1)

免责声明:

我只会在com.day.cq.dam.api中提及“旧的”资产API。 com.adobe.granite.asset.api中有一个较新的API,它有所不同且缺乏某些功能,因此我通常更喜欢使用“旧” API。


在AEM中获得引渡的方法有多种,每种方法各有利弊。

在我开始解释获取移交的几种方法之前,应遵循两个规则以简化生活:

  1. 永远不要期望缩略图或Web副本存在。
  2. 除下载外,请勿使用原始格式。

您写道:

  

需要提高分辨率或获取原始图像。

如果只想获取原始版本,则可以使用:

Rendition rendition = asset.getOriginal();

但是,如果您想获取 a 缩略图或网络副本,则应使用RenditionPicker之一。

要获取缩略图再现,可以使用:

PrefixRenditionPicker picker = new PrefixRenditionPicker(DamConstants.PREFIX_ASSET_THUMBNAIL, true)
Rendition rendition = picker.getRendition(asset);

这将为您提供选择器将找到的 first 缩略图。从理论上讲,您可以通过扩展如下代码来强制生成某种缩略图:

PrefixRenditionPicker picker = new PrefixRenditionPicker(DamConstants.PREFIX_ASSET_THUMBNAIL + ".319", true)
Rendition rendition = picker.getRendition(asset);

这将返回名称为319px的{​​{1}}缩略图。但是请记住,并不能保证存在这种形式。如果没有使用此名称的演绎,则上方的cq5dam.thumbnail.319.319.png将简单地返回RenditionPicker演绎(因为我们使用original作为第二个参数)。

可以使用相同的过程来获取网络副本。您可以从上方使用移演选择器,而只需使用另一个常量:

true

或者您使用专用的PrefixRenditionPicker picker = new PrefixRenditionPicker(DamConstants.PREFIX_ASSET_WEB, true) Rendition rendition = picker.getRendition(asset);

WCMRenditionPicker

但是像以前一样,它将返回找到的 first null (如果未找到)。

根据您的用例,您可能希望通过实现以下接口来创建自己的WCMRenditionPicker picker = new WCMRenditionPicker(); Rendition rendition = picker.getRendition(asset);

RenditionPicker

我还要提到另一个API com.day.cq.dam.api.RenditionPicker 。此类包含一些有趣的方法,例如:

com.day.cq.dam.commons.util.UIHelper

此方法将允许您指定所需的getBestfitRendition(Asset asset, int width) ,它将尝试找到最合适的 再现形式。在某些情况下这也很方便。

链接:

  1. Asset Javadoc
  2. Rendition Javadoc
  3. PrefixRenditionPicker Javadoc
  4. WCMRenditionPicker Javadoc
  5. PREFIX_ASSET_THUMBNAIL constant Javadoc
  6. PREFIX_ASSET_WEB constant Javadoc
  7. UIHelper Javadoc