Представления активов DAM - получение представления cq5dam.thumbnail.48.48.png, но требуется исходное представление - PullRequest
0 голосов
/ 22 марта 2019
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 который уменьшит четкость изображения в конце пользовательского интерфейса. Нужно увеличить разрешение или получить оригинальное изображение

1 Ответ

1 голос
/ 22 марта 2019

Отказ от ответственности:

Я только упомяну "старый" API актива в com.day.cq.dam.apicom.adobe.granite.asset.api есть новый API, отличающийся от других и лишенный некоторых функций, поэтому я обычно предпочитаю использовать «старый» API.


Существует несколько способов получения изображений в AEM ивсе они имеют свои преимущества и недостатки.

Прежде чем я начну объяснять несколько способов получения переводов, необходимо придерживаться двух правил, чтобы облегчить себе жизнь:

  1. Никогдаожидайте, что миниатюра или веб-представления будут существовать.
  2. Никогда не используйте исходное представление, за исключением загрузок.

Вы писали:

Необходимо увеличить разрешение илиполучить оригинальное изображение.

Если вы просто хотите получить оригинальное представление, вы можете просто использовать:

Rendition rendition = asset.getOriginal();

Но если вы хотите получить a Для воспроизведения миниатюр или веб-страниц вы должны использовать один из RenditionPicker.

. Чтобы получить представление в виде миниатюр, вы можете использовать:

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

Это даст вам первый представление миниатюр, которое найдет сборщик.Теоретически вы могли бы вызвать определенную передачу миниатюр, расширив код следующим образом:

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

Это вернет 319px представление миниатюр с именем cq5dam.thumbnail.319.319.png.Но помните, что нет гарантии, что это исполнение существует.Если нет воспроизведения с этим именем, RenditionPicker сверху просто вернет представление original (потому что мы использовали true в качестве второго параметра).

Тот же процесс можно использовать для получения Интернетацветопередача.Вы можете использовать средство выбора представлений сверху и просто использовать другую константу:

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

Или использовать выделенную WCMRenditionPicker:

WCMRenditionPicker picker = new WCMRenditionPicker();
Rendition rendition = picker.getRendition(asset);

Но, как и раньше, это вернет первое найденное представление или null , если ничего не найдено.

В зависимости от вашего варианта использования вы можете создать собственный RenditionPicker, выполнив следующееинтерфейс:

com.day.cq.dam.api.RenditionPicker

Есть еще один API, который я хочу упомянуть, это com.day.cq.dam.commons.util.UIHelper.Этот класс содержит несколько интересных методов, таких как:

getBestfitRendition(Asset asset, int width)

Этот метод позволит вам указать желаемое значение width, и он попытается найти ближайший вариант наилучшего соответствия.Это также может быть очень удобно в определенных ситуациях.

Ссылки:

  1. Актив Javadoc
  2. Представление Javadoc
  3. ПрефиксRenditionPicker Javadoc
  4. WCMRenditionPicker Javadoc
  5. PREFIX_ASSET_THUMBNAIL константа Javadoc
  6. PREFIX_ASSET_WEB константа Javadoc
  7. UIHelper Javadoc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...