Procesar recursos mediante controladores de medios y flujos de trabajo processing-assets-using-media-handlers-and-workflows
Adobe Experience Manager Assets incluye un conjunto de flujos de trabajo y controladores de medios predeterminados para procesar los recursos. Un flujo de trabajo define las tareas que se ejecutan en los recursos y, a continuación, delega las tareas específicas en los controladores de medios como, por ejemplo, la generación de miniaturas o la extracción de metadatos.
Se puede configurar un flujo de trabajo para que se ejecute automáticamente cuando se cargue un recurso de un tipo MIME concreto. Los pasos de procesamiento se definen en términos de una serie de controladores de medios Assets. Experience Manager proporciona algunos controladores integrados, y los adicionales pueden ser desarrollados a medida o definidos delegando el proceso a una herramienta de línea de comandos.
Los controladores de medios son servicios de Assets que realizan acciones específicas en los recursos. Por ejemplo, cuando se carga un archivo de audio MP3 en Experience Manager, un flujo de trabajo déclencheur un controlador MP3 que extrae los metadatos y genera una miniatura. Los controladores de medios se utilizan con flujos de trabajo. Los tipos MIME más comunes son compatibles con Experience Manager. Se pueden realizar tareas específicas en los recursos ampliando o creando flujos de trabajo, ampliando o creando controladores de medios, o deshabilitando y habilitando controladores de medios.
Controladores de medios predeterminados default-media-handlers
Los siguientes controladores de medios están disponibles en Assets y administran los tipos MIME más comunes:
- application/pdf
- application/illustrator
Importante: Un archivo MP3 cargado se procesa mediante una biblioteca de terceros. La biblioteca calcula una longitud aproximada no precisa si el MP3 tiene una velocidad de bits variable (VBR).
- application/java-archive
- application/zip
- image/gif
- image/png
- application/photoshop
- image/jpeg
- image/tiff
- image/x-ms-bmp
- image/bmp
- application/vnd.openxmlformats-officedocument.wordprocessingml.document
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- application/vnd.openxmlformats-officedocument.presentationml.presentation
Todos los controladores realizan las siguientes tareas:
- extraer todos los metadatos disponibles del recurso.
- crear una imagen en miniatura de un recurso.
Para ver los controladores de medios activos:
- En su explorador, vaya a
https://localhost:4502/system/console/components
. - Haga clic en
com.day.cq.dam.core.impl.store.AssetStoreImpl
. - Se muestra una lista con todos los controladores de medios activos. Por ejemplo:
Uso de controladores de medios en flujos de trabajo para realizar tareas en recursos using-media-handlers-in-workflows-to-perform-tasks-on-assets
Los controladores de medios son servicios que se utilizan con flujos de trabajo.
Experience Manager tiene algunos flujos de trabajo predeterminados para procesar los recursos. Para verlos, abra la consola Flujo de trabajo y haga clic en la ficha Modelos: los títulos de flujo de trabajo que comienzan con Assets son los específicos de los recursos.
Los flujos de trabajo existentes se pueden ampliar y se pueden crear otros nuevos para procesar recursos según requisitos específicos.
En el siguiente ejemplo se muestra cómo mejorar el flujo de trabajo de sincronización de AEM Assets para que se generen subrecursos para todos los recursos, excepto para los documentos PDF.
Deshabilitar o habilitar un controlador de medios disabling-enabling-a-media-handler
Los controladores de medios se pueden deshabilitar o habilitar a través de la consola de administración web de Apache Felix. Cuando el controlador de medios está deshabilitado, sus tareas no se realizan en los recursos.
Para habilitar o deshabilitar un controlador de medios:
- En su explorador, vaya a
https://<host>:<port>/system/console/components
. - Haga clic en Deshabilitar junto al nombre del controlador de medios. Por ejemplo:
com.day.cq.dam.handler.standard.mp3.Mp3Handler
. - Actualice la página: aparece un icono junto al controlador de medios que indica que está desactivado.
- Para habilitar el controlador de medios, haga clic en Habilitar junto al nombre del controlador de medios.
Crear un controlador de medios creating-a-new-media-handler
Para admitir un nuevo tipo de medios o ejecutar tareas específicas en un recurso, es necesario crear un controlador de medios. En esta sección se describe cómo proceder.
Clases e interfaces importantes important-classes-and-interfaces
La mejor manera de iniciar una implementación es heredar de una implementación abstracta proporcionada que se ocupe de la mayoría de las cosas y proporcione un comportamiento predeterminado razonable: la clase com.day.cq.dam.core.AbstractAssetHandler
.
Esta clase ya proporciona un descriptor de servicio abstracto. Por lo tanto, si ha heredado de esta clase y utiliza el complemento maven-sling, asegúrese de establecer el indicador de herencia en true
.
Implemente los siguientes métodos:
extractMetadata()
: extrae todos los metadatos disponibles.getThumbnailImage()
: crea una imagen en miniatura a partir del recurso pasado.getMimeTypes()
: devuelve los tipos MIME del recurso.
Esta es una plantilla de ejemplo:
package my.own.stuff; /** * @scr.component inherit="true" * @scr.service */ public class MyMediaHandler extends com.day.cq.dam.core.AbstractAssetHandler { // implement the relevant parts }
La interfaz y las clases incluyen:
-
Interfaz
com.day.cq.dam.api.handler.AssetHandler
: esta interfaz describe el servicio que agrega compatibilidad con tipos MIME específicos. Añadir un tipo MIME requiere implementar esta interfaz. La interfaz contiene métodos para importar y exportar documentos específicos, para crear miniaturas y extraer metadatos. -
Clase
com.day.cq.dam.core.AbstractAssetHandler
: esta clase sirve de base para todas las demás implementaciones de controladores de recursos y proporciona funcionalidad utilizada comúnmente. -
Clase
com.day.cq.dam.core.AbstractSubAssetHandler
:- Esta clase sirve de base para todas las demás implementaciones de controladores de recursos y proporciona la funcionalidad utilizada comúnmente, además de la funcionalidad utilizada comúnmente para la extracción de subrecursos.
- La mejor manera de iniciar una implementación es heredar de una implementación abstracta proporcionada que se ocupe de la mayoría de las cosas y proporcione un comportamiento predeterminado razonable: la clase com.day.cq.dam.core.AbstractAssetHandler.
- Esta clase ya proporciona un descriptor de servicio abstracto. Por lo tanto, si ha heredado de esta clase y utiliza el complemento maven-sling, asegúrese de establecer el indicador de herencia en true.
Se deben implementar los siguientes métodos:
extractMetadata()
: este método extrae todos los metadatos disponibles.getThumbnailImage()
: este método crea una imagen en miniatura a partir del recurso pasado.getMimeTypes()
: este método devuelve los tipos MIME del recurso.
Esta es una plantilla de ejemplo:
package my.own.stuff; /** * @scr.component inherit="true" * @scr.service */ la clase pública MyMediaHandler amplía com.day.cq.dam.core.AbstractAssetHandler
La interfaz y las clases incluyen:
- Interfaz
com.day.cq.dam.api.handler.AssetHandler
: esta interfaz describe el servicio que agrega compatibilidad con tipos MIME específicos. Añadir un tipo MIME requiere implementar esta interfaz. La interfaz contiene métodos para importar y exportar documentos específicos, para crear miniaturas y extraer metadatos. - Clase
com.day.cq.dam.core.AbstractAssetHandler
: esta clase sirve de base para todas las demás implementaciones de controladores de recursos y proporciona funcionalidad utilizada comúnmente. - Clase
com.day.cq.dam.core.AbstractSubAssetHandler
: esta clase sirve de base para todas las demás implementaciones de controladores de recursos y proporciona una funcionalidad utilizada comúnmente, además de otra funcionalidad utilizada comúnmente para la extracción de subrecursos.
Ejemplo: Creación de un controlador de texto específico example-create-a-specific-text-handler
En esta sección, se crea un controlador de texto específico que genera miniaturas con una marca de agua.
Proceda como se indica a continuación:
Consulte Herramientas de desarrollo para instalar y configurar Eclipse con un complemento de Maven y para configurar las dependencias necesarias para el proyecto Maven.
Después de realizar el siguiente procedimiento, al cargar un archivo TXT en Experience Manager, se extraen los metadatos del archivo y se generan dos miniaturas con una marca de agua.
-
En Eclipse, cree
myBundle
Maven proyecto:-
En la barra de menús, haga clic en Archivo > Nuevo > Otro.
-
En el cuadro de diálogo, expanda la carpeta Maven, seleccione el proyecto Maven y, a continuación, haga clic en Siguiente.
-
Marque la casilla Crear un proyecto simple y el cuadro Usar ubicación predeterminada de Workspace y luego haga clic en Siguiente.
-
Definir un proyecto Maven:
- Id. de grupo:
com.day.cq5.myhandler
. - ID del artefacto: myBundle.
- Nombre: Mi paquete Experience Manager.
- Descripción: Este es mi paquete Experience Manager.
- Id. de grupo:
-
Haga clic en Finalizar.
-
-
Establezca el compilador Java™ en la versión 1.5:
-
Haga clic con el botón derecho en el proyecto
myBundle
y seleccione Propiedades. -
Seleccione Compilador Java™ y establezca las siguientes propiedades en 1.5:
- Nivel de cumplimiento del compilador
- Compatibilidad de archivos .class generada
- Compatibilidad con Source
-
Haga clic en Aceptar. En la ventana de diálogo, haga clic en Sí.
-
-
Reemplace el código del archivo
pom.xml
por el siguiente código:code language-xml <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- ====================================================================== --> <!-- P A R E N T P R O J E C T D E S C R I P T I O N --> <!-- ====================================================================== --> <parent> <groupId>com.day.cq.dam</groupId> <artifactId>dam</artifactId> <version>5.2.14</version> <relativePath>../parent</relativePath> </parent> <!-- ====================================================================== --> <!-- P R O J E C T D E S C R I P T I O N --> <!-- ====================================================================== --> <groupId>com.day.cq5.myhandler</groupId> <artifactId>myBundle</artifactId> <name>My CQ5 bundle</name> <version>0.0.1-SNAPSHOT</version> <description>This is my CQ5 bundle</description> <packaging>bundle</packaging> <!-- ====================================================================== --> <!-- B U I L D D E F I N I T I O N --> <!-- ====================================================================== --> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-scr-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.sling</groupId> <artifactId>maven-sling-plugin</artifactId> <configuration> <slingUrlSuffix>/libs/dam/install/</slingUrlSuffix> </configuration> </plugin> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Bundle-Category>cq5</Bundle-Category> <Export-Package> com.day.cq5.myhandler </Export-Package> </instructions> </configuration> </plugin> </plugins> </build> <!-- ====================================================================== --> <!-- D E P E N D E N C I E S --> <!-- ====================================================================== --> <dependencies> <dependency> <groupId>com.day.cq.dam</groupId> <artifactId>cq-dam-api</artifactId> <version>5.2.10</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.day.cq.dam</groupId> <artifactId>cq-dam-core</artifactId> <version>5.2.10</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.day.cq</groupId> <artifactId>cq-commons</artifactId> </dependency> <dependency> <groupId>javax.jcr</groupId> <artifactId>jcr</artifactId> </dependency> <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.osgi.compendium</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> <dependency> <groupId>com.day.commons</groupId> <artifactId>day-commons-gfx</artifactId> </dependency> <dependency> <groupId>com.day.commons</groupId> <artifactId>day-commons-text</artifactId> </dependency> <dependency> <groupId>com.day.cq.workflow</groupId> <artifactId>cq-workflow-api</artifactId> </dependency> <dependency> <groupId>com.day.cq.wcm</groupId> <artifactId>cq-wcm-foundation</artifactId> <version>5.2.22</version> </dependency> </dependencies>
-
Cree el paquete
com.day.cq5.myhandler
que contiene las clases Java™ enmyBundle/src/main/java
:- En myBundle, haga clic con el botón derecho en
src/main/java
, seleccione Nuevo y luego Empaquetar. - Asígnele el nombre
com.day.cq5.myhandler
y haga clic en Finalizar.
- En myBundle, haga clic con el botón derecho en
-
Crear la clase Java™
MyHandler
:- En Eclipse, en
myBundle/src/main/java
, haga clic con el botón secundario en el paquetecom.day.cq5.myhandler
. Seleccione Nuevo y después Clase. - En la ventana de diálogo, asigne un nombre a la clase Java™
MyHandler
y haga clic en Finalizar. Eclipse crea y abre el archivoMyHandler.java
. - En
MyHandler.java
, reemplace el código existente por el siguiente y, a continuación, guarde los cambios:
code language-java package com.day.cq5.myhandler; import java.awt.Color; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.day.cq.dam.api.metadata.ExtractedMetadata; import com.day.cq.dam.core.AbstractAssetHandler; import com.day.image.Font; import com.day.image.Layer; import com.day.cq.wcm.foundation.ImageHelper; /** * The <code>MyHandler</code> can extract text files * @scr.component inherit="true" immediate="true" metatype="false" * @scr.service * **/ public class MyHandler extends AbstractAssetHandler { /** * Logger instance for this class. */ private static final Logger log = LoggerFactory.getLogger(MyHandler.class); /** * Music icon margin */ private static final int MARGIN = 10; /** * @see com.day.cq.dam.api.handler.AssetHandler#getMimeTypes() */ public String[] getMimeTypes() { return new String[] {"text/plain"}; } public ExtractedMetadata extractMetadata(Node asset) { ExtractedMetadata extractedMetadata = new ExtractedMetadata(); InputStream data = getInputStream(asset); try { // read text data InputStreamReader reader = new InputStreamReader(data); char[] buffer = new char[4096]; String text = ""; while (reader.read(buffer) != -1) { text += new String(buffer); } reader.close(); long wordCount = this.wordCount(text); extractedMetadata.setProperty("text", text); extractedMetadata.setMetaDataProperty("Word Count",wordCount); setMimetype(extractedMetadata, asset); } catch (Throwable t) { log.error("handling error: " + t.toString(), t); } finally { IOUtils.closeQuietly(data); } return extractedMetadata; } // ----------------------< helpers >---------------------------------------- protected BufferedImage getThumbnailImage(Node node) { ExtractedMetadata metadata = extractMetadata(node); final String text = (String) metadata.getProperty("text"); // create text layer final Layer layer = new Layer(500, 600, Color.WHITE); layer.setPaint(Color.black); Font font = new Font("Arial", 12); String displayText = this.getDisplayText(text, 600, 12); if(displayText!=null && displayText.length() > 0) { // commons-gfx Font class would throw IllegalArgumentException on empty or null text layer.drawText(10, 10, 500, 600, displayText, font, Font.ALIGN_LEFT, 0, 0); } // create watermark and merge with text layer Layer watermarkLayer; try { final Session session = node.getSession(); watermarkLayer = ImageHelper.createLayer(session, "/content/dam/we-retail/en/products/apparel/gloves/Gloves.jpg"); watermarkLayer.setX(MARGIN); watermarkLayer.setY(MARGIN); layer.merge(watermarkLayer); } catch (RepositoryException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } layer.crop(new Rectangle(510, 600)); return layer.getImage(); } // ---------------< private >----------------------------------------------- /** * This method cuts lines if the text file is too long.. * * @param text * * text to check * * @param height * * text box height (px) * * @param fontheight * * font height (px) * * @return the text which will fit into the box */ private String getDisplayText(String text, int height, int fontheight) { String trimmedText = text.trim(); int numOfLines = height / fontheight; String lines[] = trimmedText.split("\n"); if (lines.length <= numOfLines) { return trimmedText; } else { String cuttetText = ""; for (int i = 0; i < numOfLines; i++) { cuttetText += lines[i] + "\n"; } return cuttetText; } } /** * * This method counts the number of words in a string * * @param text the String whose words would like to be counted * * @return the number of words in the string * */ private long wordCount(String text) { // We need to keep track of the last character, if we have two whitespaces in a row we do not want to double count. // The starting of the document is always a whitespace. boolean prevWhiteSpace = true; boolean currentWhiteSpace = true; char c; long numwords = 0; int j = text.length(); int i = 0; while (i < j) { c = text.charAt(i++); if (c == 0) { break; } currentWhiteSpace = Character.isWhitespace(c); if (currentWhiteSpace && !prevWhiteSpace) { numwords++; } prevWhiteSpace = currentWhiteSpace; } // If we do not end with a whitespace then we need to add one extra word. if (!currentWhiteSpace) { numwords++; } return numwords; } }
- En Eclipse, en
-
Compile la clase Java™ y cree el paquete:
- Haga clic con el botón derecho en el proyecto
myBundle
, seleccione Ejecutar como y, a continuación, Instalar Maven. - El paquete
myBundle-0.0.1-SNAPSHOT.jar
(que contiene la clase compilada) se crea enmyBundle/target
.
- Haga clic con el botón derecho en el proyecto
-
En el explorador de CRX, cree un nodo en
/apps/myApp
. Nombre =install
, Tipo =nt:folder
. -
Copie el paquete
myBundle-0.0.1-SNAPSHOT.jar
y guárdelo en/apps/myApp/install
(por ejemplo, con WebDAV). El nuevo controlador de texto ahora está activo en Experience Manager. -
En su explorador, abra la Consola de administración web Apache Felix. Seleccione la ficha Componentes y deshabilite el controlador de texto predeterminado
com.day.cq.dam.core.impl.handler.TextHandler
.
Controlador de medios basado en la línea de comandos command-line-based-media-handler
Experience Manager le permite ejecutar cualquier herramienta de línea de comandos dentro de un flujo de trabajo para convertir recursos (como ImageMagick) y agregar la nueva representación al recurso. Instale únicamente la herramienta de línea de comandos en el disco que hospeda el servidor Experience Manager y agregue y configure un paso de proceso en el flujo de trabajo. El proceso invocado, denominado CommandLineProcess
, también filtra según tipos MIME específicos y para crear varias miniaturas basadas en la nueva representación.
Las siguientes conversiones se pueden ejecutar y almacenar automáticamente en Assets:
- Transformación de EPS e IA usando ImageMagick y Ghostscript.
- Transcodificación de vídeo FLV con FFmpeg.
- Codificación MP3 con LAME.
- Procesamiento de audio mediante SOX.
El proceso CommandLineProcess
realiza las siguientes operaciones en el orden indicado:
- Filtra el archivo según tipos MIME específicos, si se especifican.
- Crea un directorio temporal en el disco que hospeda el servidor Experience Manager.
- Transmite el archivo original al directorio temporal.
- Ejecuta el comando definido por los argumentos del paso. El comando se está ejecutando en el directorio temporal con los permisos del usuario que ejecuta Experience Manager.
- Transmite el resultado de nuevo a la carpeta de representación del servidor Experience Manager.
- Elimina el directorio temporal.
- Crea miniaturas basadas en esas representaciones, si se especifican. El número y las dimensiones de las miniaturas se definen mediante los argumentos del paso.
Ejemplo con ImageMagick an-example-using-imagemagick
El siguiente ejemplo muestra cómo configurar el paso de proceso de la línea de comandos para que cada vez que se agregue un recurso con el GIF o TIFF de tipo electrónico miMIME a /content/dam
en el servidor Experience Manager, se cree una imagen volteada del original. También se crean tres miniaturas más de 140 x 100, 48 x 48 y 10 x 250.
Para ello, use ImageMagick. ImageMagick es un software gratuito de línea de comandos que se utiliza para crear, editar y componer imágenes de mapa de bits.
Instale ImageMagick en el disco que hospeda el servidor Experience Manager:
-
Instalar ImageMagick: consulte Documentación de ImageMagick.
-
Configure la herramienta para que en la línea de comandos pueda ejecutar
convert
. -
Para ver si la herramienta está instalada correctamente, ejecute el siguiente comando
convert -h
en la línea de comandos.Muestra una pantalla de ayuda con todas las opciones posibles de la herramienta de conversión.
note note NOTE En algunas versiones de Windows, el comando convert puede no ejecutarse porque está en conflicto con la utilidad de conversión nativa que forma parte de la instalación de Windows. En este caso, mencione la ruta completa del software ImageMagick utilizado para convertir archivos de imagen en miniaturas. Por ejemplo, "C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe" -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png
. -
Para ver si la herramienta se ejecuta correctamente, agregue una imagen de JPG al directorio de trabajo y ejecute el comando convert
<image-name>.jpg -flip <image-name>-flipped.jpg
en la línea de comandos. Se añade una imagen volteada al directorio. A continuación, agregue el paso del proceso de la línea de comandos al flujo de trabajo DAM Update Asset. -
Vaya a la consola Workflow.
-
En la ficha Modelos, edite el modelo Recurso de actualización DAM.
-
Cambie los argumentos del paso Representación habilitada para web a:
mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg
. -
Guarde el flujo de trabajo.
Para probar el flujo de trabajo modificado, agregue un recurso a /content/dam
.
- En el sistema de archivos, obtenga una imagen de TIFF de su elección. Cambie el nombre a
myImage.tiff
y cópielo en/content/dam
, por ejemplo, utilizando WebDAV. - Vaya a la consola CQ5 DAM, por ejemplo,
https://localhost:4502/libs/wcm/core/content/damadmin.html
. - Abra el recurso myImage.tiff y compruebe que se hayan creado la imagen volteada y las tres miniaturas.
Configurar el paso del proceso CommandLineProcess configuring-the-commandlineprocess-process-step
En esta sección se describe cómo establecer los argumentos de proceso de CommandLineProcess.
Separe los valores de Argumentos del proceso con una coma y no lo inicie con un espacio en blanco.
Se pueden definir varios tipos MIME.
Se pueden definir varias miniaturas.
Se pueden usar las siguientes variables para crear el comando:
${filename}
: nombre del archivo de entrada, por ejemplo, original.jpg${file}
: nombre de ruta de acceso completo del archivo de entrada, por ejemplo, /tmp/cqdam0816.tmp/original.jpg
${directory}
: directorio del archivo de entrada, por ejemplo, /tmp/cqdam0816.tmp
${basename}
: nombre del archivo de entrada sin su extensión, por ejemplo, original${extension}
: extensión del archivo de entrada, por ejemplo, JPG de la.Por ejemplo, si ImageMagick está instalado en el disco que hospeda el servidor Experience Manager y crea un paso de proceso utilizando CommandLineProcess como implementación y los siguientes valores como Argumentos de proceso:
mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg
A continuación, cuando se ejecute el flujo de trabajo, el paso solo se aplicará a los recursos que tienen image/gif
o mime:image/tiff
como mime-types
. Crea una imagen volteada del original, la convierte en un JPG y crea tres miniaturas con las dimensiones 140x100, 48x48 y 10x250.
Use los siguientes argumentos de proceso para crear las tres miniaturas estándar con ImageMagick:
mime:image/tiff,mime:image/png,mime:image/bmp,mime:image/gif,mime:image/jpeg,cmd:convert ${filename} -define jpeg:size=319x319 -thumbnail "319x319>" -background transparent -gravity center -extent 319x319 -write png:cq5dam.thumbnail.319.319.png -thumbnail "140x100>" -background transparent -gravity center -extent 140x100 -write cq5dam.thumbnail.140.100.png -thumbnail "48x48>" -background transparent -gravity center -extent 48x48 cq5dam.thumbnail.48.48.png
Use los siguientes argumentos de proceso para crear la representación habilitada para web con ImageMagick:
mime:image/tiff,mime:image/png,mime:image/bmp,mime:image/gif,mime:image/jpeg,cmd:convert ${filename} -define jpeg:size=1280x1280 -thumbnail "1280x1280>" cq5dam.web.1280.1280.jpeg
dam:Asset
) o a los descendientes de un recurso.