Отказ от ответственности:
Я только упомяну "старый" API актива в com.day.cq.dam.api
.В com.adobe.granite.asset.api
есть новый API, отличающийся от других и лишенный некоторых функций, поэтому я обычно предпочитаю использовать «старый» API.
Существует несколько способов получения изображений в AEM ивсе они имеют свои преимущества и недостатки.
Прежде чем я начну объяснять несколько способов получения переводов, необходимо придерживаться двух правил, чтобы облегчить себе жизнь:
- Никогдаожидайте, что миниатюра или веб-представления будут существовать.
- Никогда не используйте исходное представление, за исключением загрузок.
Вы писали:
Необходимо увеличить разрешение илиполучить оригинальное изображение.
Если вы просто хотите получить оригинальное представление, вы можете просто использовать:
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
, и он попытается найти ближайший вариант наилучшего соответствия.Это также может быть очень удобно в определенных ситуациях.
Ссылки:
- Актив Javadoc
- Представление Javadoc
- ПрефиксRenditionPicker Javadoc
- WCMRenditionPicker Javadoc
- PREFIX_ASSET_THUMBNAIL константа Javadoc
- PREFIX_ASSET_WEB константа Javadoc
- UIHelper Javadoc