Esta conversación ha sido bloqueada debido a la inactividad. Cree una nueva publicación.
Nivel 1
Nivel 2
Iniciar sesión en la comunidad
Iniciar sesión para ver todas las insignias
Esta conversación ha sido bloqueada debido a la inactividad. Cree una nueva publicación.
Hi, I am currently implementing the Web-optimized image delivery api to convert to webp in my custom component, I researched and put into practice the documentation provided in:
The thing is that it doesn't work, I have read that for the api to work it has to be in an environment (example: dev or prod) but I have tried both locally and in environments and it doesn't work, in fact, it doesn't even show the error it is, I tried to do it with a try catch block and using java logs as adobe logs but they don't show anything.
What should I do to solve this problem?
This is my java sling model that I use, it uses 4 assets (fileReference) in this component
¡Resuelto! Ir a solución.
Vistas
Respuestas
Total de me gusta
Hi @Aaron_Dempwolff,
The method getWebOptimizedUrl will yield an empty result when calling options.get("seoname"). To address this issue, make sure to include options.put("seoname") within the getFileReference methods. You can take a look at the AssetDeliveryHelper.java file in the Core Component for guidance.
You can follow the Image Core Component's approach and use the image name as the "seoname. Here's how you can get the image name from the Asset.
// You can enhance your code with the following optimization.
public String getFileReference1() {
return getWebOptimizedUrl(request.getResourceResolver(), fileReference1);
}
.....
private String getWebOptimizedUrl(ResourceResolver resourceResolver, String path) {
Resource resource = resourceResolver.getResource(path);
Asset asset = DamUtil.resolveToAsset(resource);
String imageName = getImageNameFromAsset(asset);
final Map<String, Object> options = new HashMap<>();
options.put("preferwebp", "true");
options.put("width", "350");
options.put("height", "350");
// These 3 options are required for the AssetDelivery API to work
// Else it will return null
options.put("path", asset.getPath());
options.put("format", "webp");
options.put("seoname", imageName);
return assetDelivery.getDeliveryURL(resource, options);
}
Vistas
Respuestas
Total de me gusta
Hi @Aaron_Dempwolff,
The method getWebOptimizedUrl will yield an empty result when calling options.get("seoname"). To address this issue, make sure to include options.put("seoname") within the getFileReference methods. You can take a look at the AssetDeliveryHelper.java file in the Core Component for guidance.
You can follow the Image Core Component's approach and use the image name as the "seoname. Here's how you can get the image name from the Asset.
// You can enhance your code with the following optimization.
public String getFileReference1() {
return getWebOptimizedUrl(request.getResourceResolver(), fileReference1);
}
.....
private String getWebOptimizedUrl(ResourceResolver resourceResolver, String path) {
Resource resource = resourceResolver.getResource(path);
Asset asset = DamUtil.resolveToAsset(resource);
String imageName = getImageNameFromAsset(asset);
final Map<String, Object> options = new HashMap<>();
options.put("preferwebp", "true");
options.put("width", "350");
options.put("height", "350");
// These 3 options are required for the AssetDelivery API to work
// Else it will return null
options.put("path", asset.getPath());
options.put("format", "webp");
options.put("seoname", imageName);
return assetDelivery.getDeliveryURL(resource, options);
}
Vistas
Respuestas
Total de me gusta
I have corrected the parameters, some were not mapped well, but even correcting the parameters (path, format and seoname) still does not work, I have tried in the environments and nothing.
What can it be in this case?
Vistas
Respuestas
Total de me gusta
Hi @Aaron_Dempwolff,
It appears that the Image Src has been generated, but it hasn't been converted to the webp version.
As per Adobe Documentation:
When using the AEM SDK on localhost, the image service isn’t available, and the image rendering falls back to using the Adaptive Image Servlet. To use the web-optimized image delivery service, deploy the project to a AEMaaCS development environment to be able to test precisely how the image service behaves with the image service.
Vistas
Respuestas
Total de me gusta
That last screenshot is from dev environment, and I add a try catch block to, if the webp api fails, use the asset that the user upload.
Vistas
Respuestas
Total de me gusta
Hi @Aaron_Dempwolff,
Could you provide the AEM version, Uber-Jar version, and the exception message?
Vistas
Respuestas
Total de me gusta
In the AEM project we don't use Uber jar for cloud services projects, instead of that, we use the AEM SDK API, this is the version I use:
Vistas
Respuestas
Total de me gusta
Hi @Aaron_Dempwolff, Try this to initialize AssetDelivery.
import com.adobe.cq.wcm.spi.AssetDelivery;
...
@OSGiService(injectionStrategy = InjectionStrategy.OPTIONAL)
private AssetDelivery assetDelivery;
Vistas
Respuestas
Total de me gusta
Vistas
me gusta
Respuestas
Vistas
me gusta
Respuestas