使用媒體處理常式和工作流程處理資產 processing-assets-using-media-handlers-and-workflows

Adobe Experience Manager Assets隨附一組預設工作流程和媒體處理常式,以處理資產。 工作流程會定義要在資產上執行的工作,然後將特定工作委派給媒體處理常式,例如產生縮圖或擷取中繼資料。

您可以將工作流程設定為在上傳特定MIME型別的資產時自動執行。 處理步驟是以Assets個媒體處理常式的系列來定義。 Experience Manager提供一些內建處理常式,額外的處理常式可以是自訂開發的,或是透過將處理程式委派給命令列工具來定義。

媒體處理常式是Assets中的服務,可對資產執行特定動作。 例如,將MP3音訊檔案上傳至Experience Manager時,工作流程會觸發MP3處理常式,以擷取中繼資料並產生縮圖。 媒體處理常式會與工作流程搭配使用。 Experience Manager支援最常見的MIME型別。 您可以透過擴充或建立工作流程、擴充或建立媒體處理常式,或停用及啟用媒體處理常式,在資產上執行特定工作。

NOTE
請參閱支援的資產格式頁面,瞭解Assets支援的所有格式以及每種格式支援的功能。

預設媒體處理常式 default-media-handlers

下列媒體處理常式可在Assets中使用,並處理最常見的MIME型別:

處理常式名稱
服務名稱(在系統主控台中)
支援的MIME型別
文書處理常式
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
Mp3處理常式
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. 在您的瀏覽器中,瀏覽至https://localhost:4502/system/console/components
  2. 按一下「com.day.cq.dam.core.impl.store.AssetStoreImpl」。
  3. 會顯示包含所有使用中媒體處理常式的清單。 例如:

chlimage_1-437

在工作流程中使用媒體處理常式,以執行資產上的工作 using-media-handlers-in-workflows-to-perform-tasks-on-assets

媒體處理常式是與工作流程搭配使用的服務。

Experience Manager有一些處理資產的預設工作流程。 若要檢視,請開啟「工作流程」主控台,然後按一下「模型」標籤:以Assets開頭的工作流程標題是資產專屬的工作流程標題。

您可以擴充現有的工作流程,並建立新的工作流程,以根據特定需求處理資產。

下列範例說明如何增強 AEM Assets Synchronization (AEM Assets同步化) 工作流程,以便為除PDF檔案外的所有資產產生子資產。

停用或啟用媒體處理常式 disabling-enabling-a-media-handler

您可以透過Apache Felix Web管理主控台停用或啟用媒體處理常式。 停用媒體處理常式時,其工作不會於資產上執行。

若要啟用/停用媒體處理常式:

  1. 在您的瀏覽器中,瀏覽至https://<host>:<port>/system/console/components
  2. 按一下媒體處理常式名稱旁的​ 停用。 例如:com.day.cq.dam.handler.standard.mp3.Mp3Handler
  3. 重新整理頁面:媒體處理常式旁邊會顯示圖示,指出頁面已停用。
  4. 若要啟用媒體處理常式,請按一下媒體處理常式名稱旁的​ 啟用

建立媒體處理常式 creating-a-new-media-handler

若要支援新的媒體型別或在資產上執行特定工作,必須建立媒體處理常式。 本節說明如何繼續。

重要類別和介面 important-classes-and-interfaces

開始實作的最佳方式是從提供的抽象實作繼承,該實作會處理大多數事情並提供合理的預設行為: 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 類別:

    • 此類別可做為所有其他資產處理常式實作的基礎,並提供常用功能以及子資產擷取的常用功能。
    • 開始實作的最佳方式是繼承自提供的抽象實作,該實作會處理大多數事情並提供合理的預設行為:com.day.cq.dam.core.AbstractAssetHandler類別。
    • 此類別已經提供抽象服務描述元。 因此,如果您繼承自此類別並使用maven-sling-plugin,請務必將inherit標幟設為true。

必須實作下列方法:

  • extractMetadata():此方法會擷取所有可用的中繼資料。
  • getThumbnailImage():此方法會從傳遞的資產建立縮圖影像。
  • getMimeTypes():此方法會傳回資產MIME型別。

範例範本如下:

封裝my.own.stuff; /&amp;ast;&amp;ast; &amp;@scr.component inherit="true" &amp;ast; @scr.service &amp;ast;/ public類別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類別:此類別可做為所有其他資產處理常式實作的基礎,並提供常用功能以及子資產擷取的常用功能。

範例:建立特定的文書處理常式 example-create-a-specific-text-handler

您可以在此段落中建立特定的「文書處理常式」,以產生包含浮水印的縮圖。

請依照下列步驟進行:

請參考開發工具以使用Maven外掛程式安裝和設定Eclipse,以及設定Maven專案所需的相依性。

執行以下程式後,當您將TXT檔案上傳到Experience Manager時,會擷取檔案的中繼資料,並產生兩個含有浮水印的縮圖。

  1. 在Eclipse中,建立myBundle Maven專案:

    1. 在功能表列中,按一下​ 檔案 > 新增 > 其他

    2. 在對話方塊中,展開Maven資料夾,選取Maven專案,然後按一下​ 下一步

    3. 勾選「建立簡單專案」方塊和「使用預設Workspace位置」方塊,然後按一下「下一步」。

    4. 定義Maven專案:

      • 群組識別碼: com.day.cq5.myhandler
      • 成品ID: myBundle。
      • 名稱:我的Experience Manager套件。
      • 說明:這是我的Experience Manager套件。
    5. 按一下​ 完成

  2. 將Java™編譯器設定為1.5版:

    1. myBundle專案上按一下滑鼠右鍵,選取屬性。

    2. 選取Java™編譯器,並將下列屬性設定為1.5:

      • 編譯器相容性層級
      • 產生的.class檔案相容性
      • Source相容性
    3. 按一下​ 確定。 在對話視窗中,按一下​

  3. pom.xml檔案中的程式碼取代為下列程式碼:

    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>
    
  4. myBundle/src/main/java下建立包含Java™類別的封裝com.day.cq5.myhandler

    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中,以下列專案取代現有的程式碼,然後儲存變更:
    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;
     }
    }
    
  6. 編譯Java™類別並建立組合:

    1. myBundle專案上按一下滑鼠右鍵,選取​ 執行身分,然後選取​ Maven安裝
    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

命令列式媒體處理常式 command-line-based-media-handler

Experience Manager可讓您在工作流程中執行任何命令列工具,以轉換資產(例如ImageMagick)並將新轉譯新增至資產。 請在主控Experience Manager伺服器的磁碟上安裝命令列工具,並新增及設定工作流程的程式步驟。 叫用的處理序(稱為CommandLineProcess)也會根據特定的MIME型別進行篩選,並根據新的轉譯建立多個縮圖。

下列轉換可自動執行並儲存在Assets中:

NOTE
在非Windows系統上,針對檔案名稱中包含單引號(')的視訊資產,FFmpeg工具在產生轉譯時傳回錯誤。 如果您的視訊檔案名稱包含單引號,請先移除該名稱,再上傳至Experience Manager。

CommandLineProcess處理序會依照列出的順序執行下列作業:

  • 根據特定的MIME型別篩選檔案(如果指定)。
  • 在裝載Experience Manager伺服器的磁碟上建立暫存目錄。
  • 將原始檔案串流至暫存目錄。
  • 執行由步驟的引數定義的命令。 命令正在暫存目錄中執行,且使用者執行Experience Manager的許可權。
  • 將結果串流回Experience Manager伺服器的轉譯資料夾。
  • 刪除暫存目錄。
  • 如果指定,會根據這些轉譯建立縮圖。 縮圖的編號和尺寸由步驟的引數定義。

使用ImageMagick的範例 an-example-using-imagemagick

下列範例說明如何設定命令列處理步驟,以便每次將具有miMIME e-typeGIF或TIFF的資產新增至Experience Manager伺服器上的/content/dam時,都會建立原始檔案的翻轉影像。 另外也會建立三個縮圖140x100、48x48和10x250。

若要這麼做,請使用ImageMagick。 ImageMagick是用來建立、編輯和撰寫點陣圖影像的免費命令列軟體。

在裝載Experience Manager伺服器的磁碟上安裝ImageMagick:

  1. 安裝ImageMagick:請參閱ImageMagick檔案

  2. 設定工具,讓您可以在命令列執行convert

  3. 若要檢視工具是否已正確安裝,請在命令列上執行下列命令convert -h

    它會顯示說明畫面,其中包含轉換工具的所有可能選項。

    note note
    NOTE
    在某些Windows版本中,轉換命令可能無法執行,因為它與Windows安裝中的原生轉換公用程式衝突。 在此案例中,請提及用於將影像檔案轉換為縮圖的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更新資產 ​工作流程。

  5. 移至​ 工作流程 ​主控台。

  6. 在​ 模型 ​標籤中,編輯​ DAM更新資產 ​模型。

  7. 將​ 啟用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

  8. 儲存工作流程。

若要測試修改的工作流程,請新增資產至/content/dam

  1. 在檔案系統中,取得您選擇的TIFF影像。 請將它重新命名為myImage.tiff,並複製到/content/dam,例如,使用WebDAV。
  2. 移至​ CQ5 DAM ​主控台,例如https://localhost:4502/libs/wcm/core/content/damadmin.html
  3. 開啟資產​ myImage.tiff,並確認已建立反向影像和三個縮圖。

設定CommandLineProcess程式步驟 configuring-the-commandlineprocess-process-step

本節介紹如何設定 CommandLineProcess的Process參數。

請使用逗號分隔程式引數的值,並且不要以空格開頭。

引數 — 格式
說明
mime:<mime-type>
選用引數。 如果資產與引數中的MIME型別相同,則會套用程式。
可以定義數個MIME型別。
tn:<寬度>:<高度>
選用引數。 此程式會使用引數中定義的尺寸建立縮圖。
可以定義數個縮圖。
cmd: <command>
定義執行的命令。 語法取決於命令列工具。 只能定義一個指令。
下列變數可用來建立命令:
${filename}:輸入檔案的名稱,例如original.jpg
${file}:輸入檔案的完整路徑名稱,例如,/tmp/cqdam0816.tmp/original.jpg
${directory}:輸入檔案的目錄,例如,/tmp/cqdam0816.tmp
${basename}:沒有副檔名的輸入檔案的名稱,例如,原始的
${extension}:輸入檔案的副檔名,例如JPG。

例如,若在裝載Experience Manager伺服器的磁碟上安裝ImageMagick,且您使用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-types的資產。 它會建立原始影像的翻轉影像、將其轉換為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

使用下列處理程式引數來建立啟用Web的轉譯,使用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

NOTE
CommandLineProcess步驟僅適用於資產(型別dam:Asset的節點)或資產的子代。
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2