coldfusion - 如何使用 ColdFusion 的 ImageMagick

标签 coldfusion imagemagick jmagick

ColdFusion 有一个很棒的 cfimage 标签,可以完美地工作。但是,它不允许对矢量格式进行操作。这促使我继续寻找第 3 方工具来做一些“图像魔术”。

我决定试用 ImageMagick 和 ColdFusion。我读过一些帖子说“我曾经使用 ColdFusion 的 ImageMagick 工作了 X 年”。这很有启发性,但在遇到问题时并不是特别有用。

我试过以下方法:

  1. 使用参数执行 cf 以运行命令行“转换”命令。 ColdFusion 页面什么都不产生——只是一个空页面。图像未转换。没有异常(exception)或文本被发送到浏览器。 ImageMagick 命令“convert image.eps image.jpg”可以从 Windows 命令行完美运行,但不能从 ColdFusion 运行。

  2. Im4java 和 JMagick 包装器,用于直接从 Java 对象运行 IM 命令。我使用 CreateObject 函数创建了 Java 对象并尝试执行它的方法,但只收到不同类型的 Java 错误,例如“无法将 image.jpg 转换为整数”。

欢迎提出任何建议。

谢谢!

PS:我的第一个“stackoverflow”:)

最佳答案

经过一些尝试和失败后,我让 ImageMagick (IM) 为我工作。让我简要描述一下如何使用 Coldfusion 的 ImageMagick:

  1. 在盒子上安装 ImageMagick 和 Ghostscript。 Ghostscript 用于矢量图形操作。
  2. 利用CFEXECUTE标签调用带参数的IM:

    <cfexecute name="#FullIMPath#" timeout="60" arguments="""#ExpandPath(filename1)#"" ""#ExpandPath(filename2)#""" />

评论:

一个。在“名称”属性中写入 ImageMagic 可执行文件之一(例如,convert.exe)的完整路径。

为源图像和目标图像编写完整路径。请注意额外的引号 - 如果完整路径有空格 (C:\Program Files),您必须用引号将每个图像名称括起来。由于 Coldfusion 解析“arguments”属性,因此您必须筛选带有附加引号的引号,例如 - ""C:\Program Files\""。

使用超时属性,允许 ImageMagic 在 Coldfusion 进一步执行模板之前产生结果。

感谢大家的回答和兴趣。

PS:额外提示:

  • ImageMagick 提供多种格式可供使用 - 从常规 JPEG 到 Photoshop *.psd 文件。但是,对于像 Encapsulated Postscript *.eps 这样的矢量格式,您需要安装 Ghostscript;
  • 您可以使用 Adob​​e PDF 和 Adob​​e Illustrator (*.ai) 格式进行小修改 - 将它们重命名为 *.eps 并让 ImageMagick 将它们视为封装的 Postscript 矢量文件。这至少允许将矢量文件转换为位图;
  • 进程是资源密集型的,考虑增加 Coldfusion 的 JVM 内存限制。

关于coldfusion - 如何使用 ColdFusion 的 ImageMagick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/751477/

相关文章:

javascript - 根据先前选择的下拉列表删除选择下拉选项

imagemagick - ImageMagick 中的这个 'fx' 表达式有什么问题?

java - 将 MagickImage 转换为 SWT.ImageData

Java图像缩放而不将整个图像加载到内存中

replace - Coldfusion Replace() 不适用于 MS-Word 文档的所有页面

sql-server-2005 - ColdFusion 异常帮助 : coldfusion. runtime.NoOperScope cannot be cast to coldfusion.runtime.ApplicationScope

jquery - cfc 中出现 500 错误

ruby - RMagick:获取字形指标

ubuntu - ImageMagick 无法在 Ubuntu 上使用 PNG 支持进行编译

java - 有没有更好的方法来设置/运行这个Java程序?