【问题标题】:ImageMagick and Grails not workingImageMagick 和 Grails 不工作
【发布时间】:2011-02-27 15:34:23
【问题描述】:

我试图让 ImageMagick 从 grails 运行以转换一些图像,当我运行命令制作图像时没有任何反应。我没有收到任何错误,没有任何信息返回任何内容。我尝试运行其他命令,如 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 命令
并在终端中运行它,它工作正常。为什么我不能让 IM 从 grails 工作?


好的,我只使用了 java 来编写它,现在我得到了这个错误:

dyld:库未加载:/ImageMagick-6.6.1/lib/libMagickCore.3.dylib 引用自:/Library/ImageMagick/bin/convert 原因:找不到图片

【问题讨论】:

  • /convert 前面有空格吗?

标签: grails groovy imagemagick


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我刚刚做了一些非常相似的事情:

    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()。还要确保检查此返回代码以查看,因为这会提示您出了什么问题。

    【讨论】:

    • 所以我也尝试过使用 Java 方式,并尝试制作一个运行 ImageMagick 然后只返回文本的脚本。 Grails 可以很好地执行脚本并从脚本中获取文本,但是 imagemagick 仍然没有产生任何东西,尽管它似乎被称为它只是没有做任何事情。作为测试,我拿了我的脚本并运行它和一个直接的常规控制台脚本,它工作。从 grails 运行它,什么都没有!我现在完全迷路了。
    • 那种东西可能非常令人沮丧。只有几件事浮现在脑海。首先检查您要传递的文件的路径,当前目录几乎肯定不是您认为的位置,然后运行grails console 命令中的命令,这有grails env,以防万一真的破坏了一些东西你的(可能不是)。给 IM 一个非常大的图片,然后看看你是否可以在任务管理器中看到该进程,只是为了检查它是否正在运行,我们可以 procexp 来检查它打开的文件
    • 所以我刚刚发现我正在使用您在上面分享的代码获取代码 133,这意味着什么?
    • 我可以在 ImageMagick src 中找到的唯一参考是 FT_ERRORDEF_(Divide_By_Zero,0x85,"除以零") - 0x85 是十六进制 133 只能假设这是你得到的。不确定这是否有用
    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多