安装和配置ImageMagick以与AEM Assets配合使用

ImageMagick是用于创建、编辑、合成或转换位图图像的软件插件。 它可以以各种格式(超过200种)读写图像,包括PNG、JPEG、JPEG-2000、GIF、TIFF、DPX、EXR、WebP、Postscript、PDF和SVG。 使用ImageMagick调整图像大小、翻转、镜像、旋转、扭曲、剪切和变换图像。 您还可以使用ImageMagick调整图像颜色、应用各种特殊效果,或绘制文本、线、多边形、省略号和曲线。

使用命令行中的Adobe Experience Manager(AEM)媒体处理程序,通过ImageMagick处理图像。 要使用ImageMagick处理各种文件格式,请参阅资产文件格式最佳实践。 要了解所有支持的文件格式,请参阅资产支持的格式

要使用ImageMagick处理大型文件,请考虑比通常的内存要求高、IM策略所需的潜在更改以及对性能的总体影响。 内存要求取决于各种因素,如分辨率、位深度、颜色配置文件和文件格式。 如果您打算使用ImageMagick处理非常大的文件,请正确为AEM服务器设置基准。 最后提供了一些有用的资源。

注意

如果您在Adobe Managed Services(AMS)上使用AEM,请在计划处理大量大型PSD或PSB文件时联系Adobe客户关怀团队。 Experience Manager可能无法处理超过30000 x 23000像素的高分辨率PSB文件。

安装ImageMagick

ImageMagic安装文件的多个版本可用于各种操作系统。 为您的操作系统使用相应的版本。

  1. 下载适用于您的操作系统的相应ImageMagick安装文件

  2. 要在托管AEM服务器的磁盘上安装ImageMagick,请启动安装文件。

  3. 将路径环境变量设置为ImageMagic安装目录。

  4. 要检查安装是否成功,请执行identify -version命令。

设置命令行处理步骤

您可以为特定用例设置命令行流程步骤。 每次在AEM服务器上向/content/dam添加JPEG图像文件时,请执行以下步骤以生成翻转图像和缩略图(140x100、48x48、319x319和1280):

  1. 在AEM服务器上,转到工作流控制台(https://[aem_server]:[Port]/workflow),然后打开​DAM更新资产​工作流模型。

  2. 从​DAM更新资产​工作流模型中,打开​EPS缩略图(由ImageMagick提供支持)​步骤。

  3. 在​参数选项卡​中,将image/jpeg添加到​Mime类型​列表。

    mime_types_jpeg

  4. 在​Commands​框中,输入以下命令:

    convert ./${filename} -flip ./${basename}.flipped.jpg

  5. 选择​删除生成的演绎版​和​生成Web演绎版​标记。

    select_flags

  6. 在​Web Enabled Image​选项卡中,指定尺寸为1280x1280像素的呈现版本的详细信息。 此外,在​Mimetype​框中指定i mage/jpeg

    web_enabled_image

  7. 点按/单击​确定​以保存更改。

    注意

    convert命令可能无法在某些Windows版本(例如Windows SE)中运行,因为它与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

  8. 打开​流程缩略图​步骤,并在​跳过Mime类型​下添加MIME类型image/jpeg

    skip_mime_types

  9. 在​启用Web的图像​选项卡的​跳过列表​下添加MIME类型image/jpeg。 点按/单击​确定​以保存更改。

    web_enabled

  10. 保存工作流。

  11. 要检查ImageMagic是否能够正确处理图像,请将JPG图像上传到AEM Assets。 验证是否为翻转图像生成了演绎版。

缓解安全漏洞

使用ImageMagick处理图像时存在多个安全漏洞。 例如,处理用户提交的图像涉及远程代码执行(RCE)的风险。

此外,各种图像处理插件依赖于ImageMagick库,包括但不限于PHP的图像、Ruby的图像和平装剪辑,以及Node.js的图像。

如果您使用ImageMagick或受影响的库,则Adobe建议您通过执行以下至少一项任务(但最好同时执行两项任务)来缓解已知的漏洞:

  1. 在将所有图像文件发送到ImageMagick进行处理之前,请确认所有图像文件都以您支持的图像文件类型对应的预期"magic bytes"开头。
  2. 使用策略文件禁用易受攻击的ImageMagick代码。 ImageMagick的全局策略位于/etc/ImageMagick

在此页面上