处理资源使用媒体处理程序和工作流

Adobe Experience Manager Assets提供一组默认工作流和媒体处理程序来处理资源。 工作流定义一个典型的资产管理和处理任务,然后将特定任务委派给媒体处理程序,例如缩略图生成或元数据提取。

可以定义在将特定类型或格式的资产上传到服务器时自动执行的工作流。 处理步骤定义为一系列Experience Manager资产媒体处理程序。 Adobe Experience Manager提供一些内置的处理函数等,可以是自定义开发的,也可以通过将进程委派给命令行工具来定义。

媒体处理程序是Experience Manager资产内对资产执行特定操作的服务。 例如,当将MP3音频文件上传到Experience Manager中时,工作流会触发一个MP3处理函数,该处理函数提取元数据并生成缩略图。 媒体处理函数与工作流一起使用。 Experience Manager中支持大多数常见的MIME类型。 您可以通过执行下列任一操作,对资产执行特定任务

  • 扩展或创建工作流。
  • 扩展或创建媒体处理函数。
  • 禁用或启用媒体处理函数。
注意

有关每种格式支持的所有格式和功能的说明,请参阅资产支持的格式页面。

默认媒体处理函数

以下媒体处理程序可在Experience Manager资产中使用,并处理最常见的MIME类型:

处理程序名称 服务名称(在系统控制台中) 支持的MIME类型
TextHandler com.day.cq.dam.core.impl.handler.TextHandler text/plain
PdfHandler com.day.cq.dam.handler.standard.pdf.PdfHandler
  • application/pdf
  • application/illustrator
JpegHandler com.day.cq.dam.core.impl.handler.JpegHandler image/jpeg
Mp3Handler com.day.cq.dam.handler.standard.mp3.Mp3Handler audio/mpeg
重要 — 上载MP3文件时,将使用第三方库🔗处理该文件。 如果MP3具有可变比特率(VBR),则库计算非精确的近似长度。
ZipHandler com.day.cq.dam.handler.standard.zip.ZipHandler
  • application/java-archive
  • application/zip
PictHandler com.day.cq.dam.handler.standard.pict.PictHandler image/pict
StandardImageHandler com.day.cq.dam.core.impl.handler.StandardImageHandler
  • image/gif
  • image/png
  • application/photoshop
  • image/jpeg
  • image/tiff
  • image/x-ms-bmp
  • image/bmp
MSOfficeHandler com.day.cq.dam.handler.standard.msoffice.MSOfficeHandler application/msword
MSPowerPointHandler com.day.cq.dam.handler.standard.msoffice.MSPowerPointHandler application/vnd.ms-powerpoint
OpenOfficeHandler com.day.cq.dam.handler.standard.ooxml.OpenOfficeHandler
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document
  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  • application/vnd.openxmlformats-officedocument.presentationml.presentation
EPubHandler com.day.cq.dam.handler.standard.epub.EPubHandler application/epub+zip
GenericAssetHandler com.day.cq.dam.core.impl.handler.GenericAssetHandler 回退,以防找不到其他处理函数从资产中提取数据

所有处理函数都执行以下任务:

  • 正在提取资产中的所有可用元数据。
  • 从资产中创建缩略图。

可以视图活动媒体处理程序:

  1. 在您的浏览器中,导航到http://localhost:4502/system/console/components
  2. 单击链接com.day.cq.dam.core.impl.store.AssetStoreImpl
  3. 将显示包含所有活动媒体处理函数的列表。 例如:

chlimage_1-437

在工作流中使用媒体处理函数对资产执行任务

媒体处理程序是与工作流一起使用的服务。

Experience Manager具有处理资产的默认工作流。 要视图它们,请打开工作流控制台,然后单击​模型​选项卡:与Experience Manager资产开始的工作流标题是特定于资产的工作流标题。

现有工作流可以扩展,也可以创建新的应用程序以根据特定要求处理资产。

以下示例说明如何增强​AEM Assets同步​工作流,以便为除PDF文档外的所有资产生成子资产。

禁用/启用媒体处理程序

可以通过Apache Felix Web管理控制台禁用或启用媒体处理程序。 禁用媒体处理程序后,不会对资源执行其任务。

要启用/禁用媒体处理程序:

  1. 在您的浏览器中,导航到https://<host>:<port>/system/console/components
  2. 单击媒体处理程序名称旁边的​禁用。 例如:com.day.cq.dam.handler.standard.mp3.Mp3Handler
  3. 刷新页面:媒体处理程序旁边会显示一个图标,指示它已禁用。
  4. 要启用媒体处理函数,请单击媒体处理函数名称旁的​启用

创建媒体处理程序

要支持新的媒体类型或对资源执行特定任务,必须创建媒体处理程序。 本节介绍如何继续。

重要类和接口

开始实现的最佳方法是继承提供的抽象实现,该实现会处理大多数事务并提供合理的默认行为:com.day.cq.dam.core.AbstractAssetHandler类。

此类已提供抽象服务描述符。 因此,如果您继承了此类并使用maven-sling-plugin,请确保将inherit标志设置为true

实现以下方法:

  • extractMetadata():提取所有可用的元数据。
  • getThumbnailImage():在传递的资产中创建缩略图。
  • getMimeTypes():返回资产MIME类型。

以下是一个示例模板:

package my.own.stuff; /** * @scr.component inherit="true" * @scr.service */ public class MyMediaHandler extends com.day.cq.dam.core.AbstractAssetHandler { // implement the relevant parts }

接口和类包括:

  • com.day.cq.dam.api.handler.AssetHandler 接口:此接口描述添加对特定MIME类型的支持的服务。添加MIME类型需要实现此接口。 该界面包含用于导入和导出特定文档、创建缩略图和提取元数据的方法。
  • com.day.cq.dam.core.AbstractAssetHandler 类:此类用作所有其他资产处理程序实现的基础,并提供常用功能。
  • com.day.cq.dam.core.AbstractSubAssetHandler class:
    • 该类用作所有其他资产处理程序实现的基础,并为子资产提取提供常用功能以及常用功能。
    • 开始实现的最佳方法是继承提供的抽象实现,该实现会处理大多数事务并提供合理的默认行为:com.day.cq.dam.core.AbstractAssetHandler类。
    • 此类已提供抽象服务描述符。 因此,如果您从此类继承并使用maven-sling-plugin,请确保将inherit标志设置为true。

必须实现以下方法:

  • extractMetadata():此方法提取所有可用的元数据。
  • getThumbnailImage():此方法会从传递的资产中创建缩略图。
  • getMimeTypes():此方法返回资产MIME类型。

以下是一个示例模板:

打包my.own.stuff;/&ast;&ast;&ast;@scr.component inherit="true" &ast;@scr.service &ast;/公共类MyMediaHandler扩展了com.day.cq.dam.core.AbstractAssetHandler

接口和类包括:

  • com.day.cq.dam.api.handler.AssetHandler 接口:此接口描述添加对特定MIME类型的支持的服务。添加MIME类型需要实现此接口。 该界面包含用于导入和导出特定文档、创建缩略图和提取元数据的方法。
  • com.day.cq.dam.core.AbstractAssetHandler 类:此类用作所有其他资产处理程序实现的基础,并提供常用功能。
  • com.day.cq.dam.core.AbstractSubAssetHandler 类:此类用作所有其他资产处理程序实施的基础,并为子资产提取提供常用功能和常用功能。

示例:创建特定的文本处理程序

在本节中,您将创建一个特定的文本处理程序,该处理程序生成带有水印的缩览图。

按如下步骤继续:

请参阅开发工具以安装和设置带有Maven插件的Eclipse,以及设置Maven项目所需的依赖项。

执行以下过程后,当您将txt文件上传到Experience Manager时,将提取该文件的元数据并生成两个带有水印的缩略图。

  1. 在Eclipse中,创建myBundle Maven项目:

    1. 在菜单栏中,单击​文件>新建>其他

    2. 在对话框中,展开Maven文件夹,选择“Maven Project”,然后单击​“下一步”

    3. 选中​创建简单项目​框和​使用默认工作区位置​框,然后单击​下一步

    4. 使用以下值定义Maven项目:

      • 组ID:com.day.cq5.myhandler
      • 对象ID:myBundle
      • 名称:我的Experience Manager
      • 描述:这是我的Experience Manager
    5. 单击​完成

  2. 将Java™编译器设置为版本1.5:

    1. 右键单击myBundle项目,选择“属性”。

    2. 选择“Java™编译器”,将以下属性设置为1.5:

      • 编译器符合级别
      • 生成的.class文件兼容性
      • 源兼容性
    3. 单击​确定。在对话框窗口中,单击“是”。

  3. 将pom.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>
    
  4. 创建包com.day.cq5.myhandler,它包含myBundle/src/main/java下的Java™类:

    1. 在myBundle下,右键单击src/main/java,选择“新建”,然后选择“打包”。
    2. 将其命名为com.day.cq5.myhandler并单击“完成”。
  5. 创建Java™类MyHandler:

    1. 在Eclipse的myBundle/src/main/java下,右键单击com.day.cq5.myhandler包,选择新建,然后选择类。
    2. 在对话框窗口中,将Java™类命名为MyHandler,然后单击“完成”。 Eclipse创建并打开文件MyHandler.java。
    3. MyHandler.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/geometrixx/icons/certificate.png"); 
       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 whitespace in a row we don't 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; 
     } 
    }
    
  6. 编译Java™类并创建包:

    1. 右键单击myBundle项目,选择​运行为,然后选择​安装
    2. 将在myBundle/target下创建包myBundle-0.0.1-SNAPSHOT.jar(包含已编译类)。
  7. 在CRX资源管理器中,在/apps/myApp下创建一个节点。 名称= install,类型= nt:folder

  8. 复制捆绑包myBundle-0.0.1-SNAPSHOT.jar并将其存储在/apps/myApp/install下(例如WebDAV)。 新的文本处理函数现在在Experience Manager中处于活动状态。

  9. 在您的浏览器中,打开Apache Felix Web管理控制台。 选择“组件”选项卡并禁用默认文本处理程序com.day.cq.dam.core.impl.handler.TextHandler

基于命令行的媒体处理程序

Experience Manager允许您在工作流中运行任何命令行工具来转换资产(如ImageMagick)并将新演绎版添加到资产。 在托管Experience Manager服务器的磁盘上安装命令行工具,并向工作流中添加和配置进程步骤。 调用的进程(称为CommandLineProcess)根据特定MIME类型进行过滤器,并基于新的演绎版创建多个缩略图。

以下转换可以自动运行并存储在Experience Manager资产中:

注意

在非Windows系统上,FFMpeg工具为文件名中包含单引号(')的视频资产生成演绎版时返回错误。 如果视频文件的名称包含单引号,请在上传到Experience Manager之前删除该引号。

CommandLineProcess进程按其列出顺序执行下列操作:

  • 过滤器文件时,将根据特定的mime类型(如果指定)。
  • 在托管Experience Manager服务器的磁盘上创建临时目录。
  • 将原始文件流化到临时目录。
  • 执行由步骤的参数定义的命令。 该命令正在临时目录内执行,具有运行Experience Manager的用户的权限。
  • 将结果流化回Experience Manager服务器的再现文件夹。
  • 删除临时目录。
  • 根据这些再现创建缩览图(如果已指定)。 缩略图的数量和尺寸由步骤的参数定义。

使用ImageMagick的示例

以下示例显示如何设置命令行处理步骤。 每次将具有MIME类型gif或tiff的资产添加到Experience Manager服务器上的/content/dam时,都会创建原始图像的翻转图像以及另外三个缩略图(140x100、48x48和10x250)。

要执行此过程步骤,请使用ImageMagick。 在托管Experience Manager服务器的磁盘上安装ImageMagick:

  1. 安装ImageMagick。 有关详细信息,请参阅ImageMagick文档

  2. 设置该工具,以便在命令行上运行convert

  3. 要查看工具是否安装正确,请在命令行上运行以下命令convert -h

    它显示一个“帮助”屏幕,其中包含转换工具的所有可能选项。

    注意

    在Windows®的某些版本(例如Windows® SE)中,convert命令无法运行,因为它与作为Windows®安装一部分的本机convert实用程序冲突。 在这种情况下,请提及用于将图像文件转换为缩略图的ImageMagick实用程序的完整路径。 例如,"C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe" -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png

  4. 要查看该工具是否运行正确,请向工作目录中添加一个JPG图像,并在命令行上运行命令convert <image-name>.jpg -flip <image-name>-flipped.jpg

    翻转后的图像会添加到目录中。

然后,将命令行流程步骤添加到 DAM 更新资产​工作流:

  1. 转到​Workflow​控制台。

  2. 在​模型​选项卡中,编辑​DAM更新资产​模型。

  3. 更改​启用Web的再现​步骤的设置,如下所示:

    mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg

  4. 保存工作流。

要测试修改后的工作流,请向/content/dam添加一个资产。

  1. 在文件系统中,获取您选择的TIFF图像。 将其重命名为myImage.tiff,然后将其复制到/content/dam,例如使用WebDAV。
  2. 转至​CQ5 DAM​控制台,例如http://localhost:4502/libs/wcm/core/content/damadmin.html
  3. 打开资产myImage.tiff,验证已创建翻转的图像和三个缩略图。

配置CommandLineProcess进程步骤

本节介绍如何设置 ​进程参数CommandLineProcess。使用逗号分隔进程参数的值,不要用空格开始值。

参数格式 描述
mime:<mime类型> 可选参数。 如果资产的MIME类型与其中一个参数的MIME类型相同,则应用该过程。
可以定义多个MIME类型。
tn:<width>:<height> 可选参数。 该过程会创建一个缩略图,其尺寸在参数中定义。
可以定义多个缩略图。
cmd:<命令> 定义要运行的命令。 语法取决于命令行工具。 只能定义一个命令。
以下变量可用于创建命令:
${filename}:输入文件的名称,例如original.jpg
${file}:输入文件的完整路径名,例如/tmp/cqdam0816.tmp/original.jpg
${directory}:的目录,例如/tmp/cqdam0816.tmp
${basename}:不带扩展名的输入文件的名称,例如原始文件
${extension}:输入文件的扩展名,例如jpg

例如,如果ImageMagick安装在承载Experience Manager服务器的磁盘上,并且如果您使用​CommandLineProcess​作为实现创建进程步骤,并使用以下值作为​Process Arguments:

mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg

然后,当工作流运行时,该步骤仅适用于具有image/gifmime:image/tiff作为mime类型的资产。 它创建原始图像的翻转图像,将其转换为.jpg并创建具有尺寸的三个缩览图:140x100、48x48和10x250。

使用以下处理参数使用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

使用以下处理参数使用ImageMagick创建启用Web的再现:

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

注意

CommandLineProcess步骤仅适用于资产(dam:Asset类型的节点)或资产的后代。

On this page