使用媒體處理常式和工作流程處理資產

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

工作流程可設定為在上傳特定MIME類型的資產時自動執行。 這些處理步驟是根據一系列Assets介質處理程式定義的。 Experience Manager 提供一些 內置處理程式, 其它處理程式可以是自 定義 開發或通過將進程委託給命令行工 具來定義

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

注意

有關Assets支援的所有格式以及每種格式支援的功能的說明,請參閱 Assets supported formats頁面。

預設媒體處理程式

Assets中提供下列媒體處理常式,並可處理最常見的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
Importent —— 當您上傳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 有一些預設的工作流程來處理資產。要查看它們,請開啟「工作流控制台」,然後按一下​Models​頁籤:以Assets開頭的工作流程標題是資產特定標題。

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

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

禁用或啟用媒體處理程式

媒體處理常式可以透過Apache Felix Web Management Console停用或啟用。 停用媒體處理常式時,不會對資產執行其工作。

要啟用/禁用媒體處理程式:

  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 類別:
    • 此類別可做為所有其他資產處理常式實作的基礎,並提供常用功能以及子資產擷取常用功能。
    • 開始實施的最佳方式是繼承所提供的抽象實施,以處理大部分事物並提供合理的預設行為: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;/ public class MyMediaHandler extends 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 類別:此類別可做為所有其他資產處理常式實作的基礎,並提供常用功能以及子資產擷取的常用功能。

範例:建立特定的文本處理程式

在本節中,您將建立特定的文字處理常式,以產生含浮水印的縮圖。

按如下步驟進行:

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

執行以下過程後,將TXT檔案上載到Experience Manager時,將提取檔案的元資料並生成兩個帶有水印的縮略圖。

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

    1. 在菜單欄中,按一下​檔案 > 新建 > 其他

    2. 在對話框中,展開Maven資料夾,選擇Maven項目,然後按一下​Next

    3. 選中「建立簡單項目」框和「使用預設工作區位置」框,然後按一下「下一步」。

    4. 定義Maven專案:

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

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

    1. 按一下右鍵myBundle項目,選擇屬性。

    2. 選擇Java Compiler並將以下屬性設定為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 whitespaces 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;
}

}


1. 編譯Java類並建立包:

1. 按一下右鍵`myBundle`項目,選擇&#x200B;**以**&#x200B;運行,然後選擇&#x200B;**Maven Install**。
1. 在`myBundle/target`下建立包`myBundle-0.0.1-SNAPSHOT.jar`(包含編譯的類)。

1. 在CRX瀏覽器中,在`/apps/myApp`下建立一個新節點。 名稱= `install`,類型= `nt:folder`。
1. 複製包`myBundle-0.0.1-SNAPSHOT.jar`並將其儲存在`/apps/myApp/install`下(例如,與WebDAV一起)。 新文字處理常式現在在Experience Manager中處於作用中。
1. 在您的瀏覽器中,開啟Apache Felix Web Management Console。 選擇Components標籤並禁用預設文本處理程式`com.day.cq.dam.core.impl.handler.TextHandler`。

## 基於命令行的媒體處理程式{#command-line-based-media-handler}

Experience Manager 可讓您在工作流程中執行任何命令列工具,以轉換資產( ImageMagick例如),並將新的轉譯新增至資產。您只需在Experience Manager伺服器所在的磁碟上安裝命令行工具,並在工作流中添加和配置進程步驟。 調用的進程(稱為`CommandLineProcess`)還可以根據特定MIME類型進行篩選,並根據新的轉譯建立多個縮略圖。

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

* 使用[ImageMagick](https://www.imagemagick.org/script/index.php)和[Ghostscript](https://www.ghostscript.com/)進行EPS和AI轉換。
* 使用[FFmpeg](https://ffmpeg.org/)進行FLV視訊轉碼。
* 使用[LAME](https://lame.sourceforge.io/)進行MP3編碼。
* 使用[SOX](https://sox.sourceforge.net/)進行音訊處理。

<div class="extension note">
<div>注意</div>
<div>
<p>在非Windows系統上,FFmpeg工具會傳回錯誤,因為其檔案名稱中包含單引號(&#39;)的視訊資產會產生轉譯。 如果視訊檔案的名稱包含單引號,請先將其移除,然後再上傳至Experience Manager。</p>
</div>
</div>


`CommandLineProcess`進程會按列出順序執行以下操作:

* 根據特定MIME類型(如果已指定)篩選檔案。
* 在Experience Manager伺服器所在的磁碟上建立臨時目錄。
* 將原始檔案流到臨時目錄。
* 執行由步驟的參數定義的命令。 該命令在運行Experience Manager的用戶的權限下在臨時目錄中執行。
* 將結果流回Experience Manager伺服器的轉譯資料夾。
* 刪除臨時目錄。
* 根據這些轉譯(如果已指定)建立縮圖。 縮圖的編號和尺寸由步驟的參數定義。

### 使用ImageMagick的範例 {#an-example-using-imagemagick}

以下示例說明如何設定命令行處理步驟,以便每次將具有miMIME e-type GIF或TIFF的資產添加到Experience Manager伺服器上的`/content/dam`時,將建立原始影像的翻轉影像以及另外三個縮圖(140x100、48x48和10x25)0)。

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

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

1. 安裝ImageMagick:請參閱[ImageMagick檔案](https://www.imagemagick.org/script/download.php)。
1. 設定工具,以便在命令行上運行轉換。
1. 要查看工具是否已正確安裝,請在命令行上運行以下命令`convert -h`。

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

<div class="extension note">
<div>注意</div>
<div>
<p>在某些Windows版本中,轉換命令可能無法運行,因為它與Windows安裝中的本機轉換實用程式衝突。 在此例中,請提及用於將影像檔案轉換為縮圖的ImageMagick軟體的完整路徑。 例如,<code>&quot;C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe&quot; -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png</code>。</p>

</div>
</div>


1. 要查看工具是否正常運行,請將JPG影像添加到工作目錄並運行命令行convert `<image-name>.jpg -flip <image-name>-flipped.jpg`。 翻轉的影像會新增至目錄。 然後,將命令行處理步驟添加到&#x200B;**DAM更新資產**&#x200B;工作流。
1. 轉至&#x200B;**Workflow**&#x200B;控制台。
1. 在&#x200B;**Models**&#x200B;標籤中,編輯&#x200B;**DAM Update Asset**&#x200B;模型。
1. 將&#x200B;**啟用Web的轉譯**&#x200B;步驟的參數更改為:`mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg`。
1. 儲存工作流程。

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

1. 在檔案系統中,取得您選擇的TIFF影像。 將其重新命名為`myImage.tiff`並複製到`/content/dam`,例如使用WebDAV。
1. 前往&#x200B;**CQ5 DAM**&#x200B;主控台,例如`http://localhost:4502/libs/wcm/core/content/damadmin.html`。
1. 開啟資產&#x200B;**myImage.tiff**,並確認已建立翻轉的影像和三個縮圖。

#### 配置CommandLineProcess進程步驟{#configuring-the-commandlineprocess-process-step}

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

使用逗號分隔處理參數的值,不要以空格開頭。

| 參數格式 | 說明 |
|---|---|
| mime:&lt;mime-type> | 可選引數。 如果資產與其中一個引數的MIME類型相同,則會套用此程式。 <br>可定義數種MIME類型。 |
| tn:&lt;width>:&lt;height> | 可選引數。 該過程建立具有在參數中定義的尺寸的縮略圖。 <br>可定義數個縮圖。 |
| cmd:&lt;command> | 定義所執行的命令。 語法取決於命令行工具。 只能定義一個命令。 <br>以下變數可用來建立命令:<br>`${filename}`:輸入檔案的名稱,例如original.jpg  <br> `${file}`:輸入檔案的完整路徑名稱,例如  `/tmp/cqdam0816.tmp/original.jpg` <br> `${directory}`:目錄,例如 `/tmp/cqdam0816.tmp` <br>`${basename}`:輸入檔案的名稱(不帶副檔名),例如原始檔案 <br>`${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/gif`或`mime: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`

使用處理參數使用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`

<div class="extension note">
<div>注意</div>
<div>
<p>CommandLineProcess步驟僅適用於資產(<code>dam:Asset</code>類型的節點)或資產的後代。</p>
</div>
</div>


<div class="extension relatedarticles">
<div>相關文章</div>
<div>
<ul>
<li><a href="/docs/experience-manager-65/assets/using/assets-workflow.html?lang=zh-Hant">處理資產</a></li>
</ul>
</div>
</div>

本頁內容

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now