Process assets using media handlers and workflows

Adobe Experience Manager Assets には、アセットの処理に使用するデフォルトのワークフローとメディアハンドラーのセットが付属しています。ワークフローは、アセットに対して実行されるタスクを定義し、特定のタスク(サムネールの生成やメタデータ抽出など)をメディアハンドラーに委任します。

特定のMIMEタイプのアセットがアップロードされたときに、自動的に実行されるようにワークフローを設定できます。 The processing steps are defined in terms of a series of Assets media handlers. Experience Manager には、組み込みのハンドラーがいくつか用意されています。さらに、追加のハンドラーをカスタムで開発したり、処理をコマンドラインツールに委任して定義したりできます。

Media handlers are services in Assets that perform specific actions on assets. For example, when an MP3 audio file is uploaded into Experience Manager, a workflow triggers an MP3 handler that extracts the metadata and generates a thumbnail. 通常、メディアハンドラーはワークフローと組み合わせて使用されます。Most common MIME types are supported within Experience Manager. アセットに対して特定のタスクを実行するには、ワークフローを拡張または作成するか、メディアハンドラーを拡張または作成するか、メディアハンドラーを無効または有効にします。

メモ

See the Assets supported formats page for a description of all the formats supported by Assets as well as features supported for each format.

Default media handlers

The following media handlers are available within Assets and handle the most common MIME types:

ハンドラー名 サービス名(システムコンソール内) サポートされる 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
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. In your browser, navigate to http://localhost:4502/system/console/components.
  2. com.day.cq.dam.core.impl.store.AssetStoreImpl」をクリックします。
  3. すべてのアクティブなメディアハンドラーリストが表示されます。次に例を示します。

chlimage_1-437

Use media handlers in workflows to perform tasks on assets

通常、メディアハンドラーはワークフローと組み合わせて使用されるサービスです。

Experience Manager には、アセットを処理するデフォルトのワークフローがいくつかあります。ワークフローを表示するには、ワークフローコンソールを開き、「モデル」タブをクリックします。「」から始まるワークフロータイトルは、アセット固有のタイトルです。Assets

特定の要件に従って、既存のワークフローを拡張し、新しいワークフローを作成してアセットを処理できます。

以下の例は、AEM Assets 同期​ワークフローを拡張して、PDF ドキュメント以外のすべてのアセットについてサブアセットを生成するための方法を示しています。

メディアハンドラーの無効化または有効化

メディアハンドラーを無効または有効にするには、Apache Felix Web Management Console を使用します。メディアハンドラーを無効にすると、そのアセットに対してメディアハンドラーのタスクは実行されません。

メディアハンドラーを有効または無効にするための手順

  1. ブラウザーで、https://<host>:<port>/system/console/components です。
  2. メディアハンドラーの名前の横にある「Disable」をクリックします。例:com.day.cq.dam.handler.standard.mp3.Mp3Handler
  3. ページを更新します。メディアハンドラーの横に、無効であることを示すアイコンが表示されます。
  4. メディアハンドラーを有効にするには、メディアハンドラーの名前の横にある「Enable」をクリックします。

Create 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 タイプを返します。

以下にテンプレートの例を示します。

package 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 クラス:その他すべてのアセットハンドラー実装の基礎として機能し、よく使用される機能を提供します。さらに、サブアセットの抽出についてよく使用される機能も提供します。

Example: create a specific text handler

ここでは、透かしありのサムネールを生成する固有の Text Handler を作成します。

以下の手順を実行します。

プラグインを使用してEclipseをインストールおよび設定し、プ ロジェクトに必要な依存関係を設定するには、「 開発ツール MavenMaven 」を参照してください。

After you perform the following procedure, when you upload a TXT file into Experience Manager, the file's metadata are extracted and two thumbnails with a watermark are generated.

  1. Eclipseで、 myBundle プロジェクトを作成し Maven ます。

    1. In the Menu bar, click File > New > Other.

    2. In the dialog, expand the Maven folder, select Maven project and click Next.

    3. Check the Create a simple project box and the Use default Workspace locations box, then click Next.

    4. プ Maven ロジェクトの定義:

      • Group Id: com.day.cq5.myhandler.
      • Artifact Id:myBundle.
      • Name: My Experience Manager bundle.
      • Description: This is my Experience Manager bundle.
    5. Finish」をクリックします。

  2. Set the Java compiler to version 1.5:

    1. Right-click the myBundle project, select Properties.

    2. Select Java Compiler and set following properties to 1.5:

      • Compiler compliance level
      • Generated .class files compatibility
      • Source compatibility
    3. OK」をクリックします。In the dialog window, click Yes.

  3. Replace the code in the pom.xml file with the following code:

    <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 を含むパッケージ Java を作成し myBundle/src/main/javaます。

    1. Under myBundle, right-click src/main/java, select New, then Package.
    2. Name it com.day.cq5.myhandler and click Finish.
  5. ク Java ラスの作成 MyHandler:

    1. の下 Eclipseで、 myBundle/src/main/javaパッケージ com.day.cq5.myhandler を右クリックします。 「 新規」、「 クラス」の順に選択します。
    2. In the dialog window, name the Java class MyHandler and click Finish. Eclipse ファイルを作成して開き MyHandler.javaます。
    3. In MyHandler.java replace the existing code with the following and then save the changes:
    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;
     }
    }
    
  6. Compile the Java class and create the bundle:

    1. Right-click the myBundle project, select Run As, then Maven Install.
    2. The bundle myBundle-0.0.1-SNAPSHOT.jar (containing the compiled class) is created under myBundle/target.
  7. In CRX explorer, create a new node under /apps/myApp. Name = install, Type = nt:folder.

  8. Copy the bundle myBundle-0.0.1-SNAPSHOT.jar and store it under /apps/myApp/install (for example with WebDAV). The new text handler is now active in Experience Manager.

  9. In your browser, open the Apache Felix Web Management Console. Select the Components tab and disable the default text handler com.day.cq.dam.core.impl.handler.TextHandler.

Command Line based media handler

Experience Manager を使用すると、ワークフロー内で任意のコマンドラインツールを実行して、アセットを変換し( など)、新しいレンディションをアセットに追加できます。ImageMagickYou only need to install the command-line tool on the disk hosting the Experience Manager server and to add and configure a process step to the workflow. また、CommandLineProcess という起動プロセスによって、特定の MIME タイプに従ってフィルター処理を実行し、新しいレンディションに基づいて複数のサムネールを作成することもできます。

The following conversions can be automatically run and stored within Assets:

メモ

Windows以外のシステムでは、Fmpegツールは、ファイル名に一重引用符(')が含まれるビデオアセットのレンディションの生成中にエラーを返します。 If the name of your video file includes a single quote, remove it before uploading to Experience Manager.

CommandLineProcess プロセスは、リストに表示されている順序で以下の操作を実行します。

  • MIME タイプを指定した場合、そのタイプに従ってファイルをフィルターします。
  • Creates a temporary directory on the disk hosting the Experience Manager server.
  • 元のファイルを一時ディレクトリにストリーミングします。
  • ステップの引数で定義されたコマンドを実行します。The command is being executed within the temporary directory with the permissions of the user running Experience Manager.
  • Streams the result back into the rendition folder of the Experience Manager server.
  • 一時ディレクトリを削除します。
  • 指定した場合は、それらのレンディションに基づいてサムネールを作成します。サムネールの数とサイズは、ステップの引数で定義されます。

An example using ImageMagick

The following example shows you how to set up the command line process step so that every time an asset with the miMIME e-type GIF or TIFF is added to /content/dam on the Experience Manager server, a flipped image of the original is created together with three additional thumbnails (140x100, 48x48, and 10x250).

To do this, use ImageMagick. ImageMagick は、ビットマップ画像の作成、編集、構成に使用する無料のコマンドラインソフトウェアです。

Install ImageMagick on the disk hosting the Experience Manager server:

  1. Install ImageMagick: See ImageMagick documentation.

  2. コマンドラインで convert を実行できるようにツールを設定します。

  3. ツールが適切にインストールされているかどうかを確認するには、コマンド convert -h をコマンドラインで実行します。

    convert ツールの使用できるすべてのオプションが記載されたヘルプ画面が表示されます。

    メモ

    In some versions of Windows, the convert command may fail to run because it conflicts with the native convert utility that is part of Windows installation. In this case, mention the complete path for the ImageMagick software used to convert image files to thumbnails. 例: "C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe" -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png

  4. To see if the tool runs properly, add a JPG image to the working directory and run the command convert <image-name>.jpg -flip <image-name>-flipped.jpg on the command line. 反転画像がディレクトリに追加されます。Then, add the command line process step to the DAM Update Asset workflow.

  5. ワークフロー​コンソールを開きます。

  6. モデル」タブで、DAM アセット更新​モデルを編集します。

  7. Web対応レンディションの 引数 (Arguments of the Web enabled rendition)を次に変更します。 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 に変更し、WebDAV などを使用して、/content/dam にコピーします。
  2. CQ5 DAM コンソール(例:http://localhost:4502/libs/wcm/core/content/damadmin.html)を開きます。
  3. アセット myImage.tiff を開き、反転画像と 3 つのサムネールが作成されたことを確認します。

Configure the CommandLineProcess process step

ここでは、CommandLineProcess のプロセス引数を設定する方法について説明します。

「 Process Arguments 」の値は、コンマで区切ります。空白で開始しないでください。

引数のフォーマット 説明
mime:<mime-type> オプション引数。アセットの MIME タイプが引数の MIME タイプと同じ場合にプロセスが適用されます。
いくつかのMIMEタイプを定義できます。
tn:<width>:<height> オプション引数。プロセスにより、引数で定義されたサイズのサムネールが作成されます。
複数のサムネールを定義できます。
cmd: <command> 実行するコマンドを定義します。 この構文はコマンドラインツールによって異なります。1 つのコマンドのみを定義できます。
次の変数を使用して、コマンドを作成できます。
${filename}入力ファイルの名前(original.jpgなど)
${file}:入力ファイルのフルパス名(例:) /tmp/cqdam0816.tmp/original.jpg
${directory}:入力ファイルのディレクトリ。例 /tmp/cqdam0816.tmp
${basename}:入力ファイルの名前(拡張子なし)。例: original
${extension}:入力ファイルの拡張子(JPGなど)。

For example, if ImageMagick is installed on the disk hosting the Experience Manager server and if you create a process step using CommandLineProcess as Implementation and the following values as 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

then, when the workflow runs, the step only applies to assets that have image/gif or mime:image/tiff as mime-types, it creates a flipped image of the original, converts it into JPG and creates three thumbnails that have the dimensions: 140x100, 48x48, and 10x250.

Use the following Process Arguments to create the three standard thumbnails using 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 the following Process Arguments to create the web-enabled rendition using 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

メモ

The CommandLineProcess step only applies to assets (nodes of type dam:Asset) or descendants of an asset.

このページ