ImageMagick和Grails无法正常工作

时间:2010-06-04 06:03:35

标签: grails groovy imagemagick

当我运行命令使图像没有任何反应时,我正在尝试从Grails运行ImageMagick来转换一些图像。我没有错误,没有任何信息根本没有返回。我尝试过运行其他命令,比如touch和ps ux,看看它们是否有效,并且它们都能正常工作。看起来像imagemagick命令正在迷失,我不知道该怎么做。这是我一直在使用的代码。

String command = CH.config.ImageMagickPath + "/convert -size 40x20 xc:red  xc:blue -append -rotate 90 append_rotate.gif"
println command
command.execute()

CH.config.ImageMagickPath设置为imagemagick / bin所在的位置。我已经采取了所示的内容     println命令
并在终端中运行它,它工作正常。我有什么理由不能通过Grails让IM工作吗?


好吧我只使用java来编码它,现在我收到了这个错误:

dyld:未加载库:/ ImageMagick-6.6.1/lib/libMagickCore.3.dylib   参考自:/ Library / ImageMagick / bin / convert   原因:未找到图像

2 个答案:

答案 0 :(得分:1)

我刚刚做了类似的事情:

def convert = ["/usr/bin/convert","/opt/local/bin/convert"].find( { new File(it as String).exists() })
File thumbnail = new File(f.getParentFile(),FilenameUtils.getBaseName(f.getName()) + ".thumbnail.png")
ProcessBuilder pb = new ProcessBuilder()
        .command(convert, f.getName(), "-thumbnail", "128x128>","-bordercolor","snow","-background","black", "-polaroid", "0", thumbnail.getName())
        .directory(f.getParentFile());

int result = pb.start().waitFor()

if( result != 0 ){
  throw new ImageMagickException("thumbnail generation failured, return code:" + result);
}

它有点冗长(java是在我脑海中根深蒂固的方式)但它确实有效。

请注意String.execute返回一个进程对象,在检查任何生成的文件之前需要调用waitFor()。另外,请确保检查此处的返回代码,以便查看是否会出现问题。

答案 1 :(得分:0)

我建议使用JMagick,它是imagemagick库周围的JNI包装器。它也比调用execute()更有效。