使用运行时执行程序从Java调用ImageMagick转换

艾琳

我想将一些图像从tif转换为tif,以更改光度学解释。

我找到了ImageMagick工具并安装了它,在命令行中,以下命令可以正常工作并满足我的要求:

 convert my_image.TIF dest.TIF

现在,我想从Java程序自动启动它。我正在使用Eclipse和ImageMagick 6.8.8.-Q16在Windows上工作。

我尝试使用JMagick,但是我只能在以前的ImageMagick-Version上使用它,并且在转换tif时遇到问题(每次我在命令行中都得到黑色图像时)。Windows的最新JMagick-Version未找到更新的ImageMagick-Version。

因此,我尝试使用Java Process Builder或Runtime exec命令,例如:

 Process proc = Runtime.getRuntime().exec(new String[]{"convert","my_image.TIF","dest.TIF"});

 ProcessBuilder pb = new ProcessBuilder("convert", "0011D7FE.TIF", "dest.tif");   
 pb.redirectErrorStream(true);   
 try {   
   Process p = pb.start();   
   BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));   
   String line = null;   
   while((line=br.readLine())!=null){   
       System.out.println(line);   
   }   
   System.out.println(p.waitFor());   
  } catch(Exception e) { } 

不管怎样,我确切地插入了什么命令,我总是收到第二个参数的错误消息“ Invalid Param-dest.tif”。

我发现本文http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=19679出现了类似的问题,该程序尝试使用某些Windows转换功能。因此,我将ImageMagick文件夹添加到了系统变量中,并且还将一个包含此文件夹的新变量添加到了我在Eclipse中的项目构建路径中。但是我仍然遇到同样的错误。还有其他必须设置路径的地方吗?或任何其他解释我得到的错误?

马克·谢切尔

更新的答案2017年3月28日

ImageMagick的v7版本开始,该convert命令已被替换magick为避免此问题。所以...

  • convert input.tif output.tif 变成 magick input.tif output.tif
  • identify image.jpg 变成 magick identify image.jpg
  • compare image.jpg ... 变成 magick compare image.jpg ...
  • compose image.jpg ... 变成 magick compose image.jpg ...
  • mogrify image.jpg ... 变成 magick mogrify image.jpg ...

原始答案

您可以将Windows的内置convert程序convertntfs重命名为,也可以将ImageMagick的重命名convertIMconvert这可能比希望您始终记得在所有计算机上正确设置PATH更好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用运行时执行程序从Java调用ImageMagick转换

来自分类Dev

进程暂停时Java运行时执行程序getInputStream

来自分类Dev

JAVA运行时执行程序在大型机USS环境中为netstat命令抛出IOException

来自分类Dev

在多个执行程序中运行时,火花作业被卡住

来自分类Dev

Android,运行时执行程序删除软件包

来自分类Dev

在多个执行程序中运行时,火花作业被卡住

来自分类Dev

使用类路径中的 Kotlin 运行时库执行 Java 和 Kotlin 程序

来自分类Dev

如果在程序运行时删除程序执行程序,会发生什么情况?

来自分类Dev

在程序运行时使函数调用

来自分类Dev

Java运行时执行-确认问题

来自分类Dev

如何在C程序运行时中正确调用可执行文件?

来自分类Dev

程序执行时间极短的运行时间

来自分类Dev

Java程序出现运行时错误

来自分类Dev

程序运行时继续使用bash

来自分类Dev

程序运行时继续使用bash

来自分类Dev

Java 运行时,在关闭应用程序时执行一些操作

来自分类Dev

SBCL:在运行时收集运行程序进程的输出

来自分类Dev

SBCL:在运行时收集运行程序进程的输出

来自分类Dev

在 Delphi 中运行时如何运行命令行程序并发送密钥?

来自分类Dev

将程序转换为使用函数,现在运行时什么也不做

来自分类Dev

运行时在框架应用程序中调用超时

来自分类Dev

当我运行程序时出现运行时错误,但在使用调试器时却没有

来自分类Dev

当我运行程序时出现运行时错误,但在使用调试器时却没有

来自分类Dev

使用runtime.getruntime命令通过Java代码运行时,该命令无法成功执行

来自分类Dev

如何使用VirtualBox执行程序设置Gitlab运行程序

来自分类Dev

如何从Java中的运行时执行获取实时输出?

来自分类Dev

在运行时在Java中执行.exe或.linux文件

来自分类Dev

运行时类型转换

来自分类Dev

无法使用PhantomJS运行程序调用require('fs')

Related 相关文章

  1. 1

    使用运行时执行程序从Java调用ImageMagick转换

  2. 2

    进程暂停时Java运行时执行程序getInputStream

  3. 3

    JAVA运行时执行程序在大型机USS环境中为netstat命令抛出IOException

  4. 4

    在多个执行程序中运行时,火花作业被卡住

  5. 5

    Android,运行时执行程序删除软件包

  6. 6

    在多个执行程序中运行时,火花作业被卡住

  7. 7

    使用类路径中的 Kotlin 运行时库执行 Java 和 Kotlin 程序

  8. 8

    如果在程序运行时删除程序执行程序,会发生什么情况?

  9. 9

    在程序运行时使函数调用

  10. 10

    Java运行时执行-确认问题

  11. 11

    如何在C程序运行时中正确调用可执行文件?

  12. 12

    程序执行时间极短的运行时间

  13. 13

    Java程序出现运行时错误

  14. 14

    程序运行时继续使用bash

  15. 15

    程序运行时继续使用bash

  16. 16

    Java 运行时,在关闭应用程序时执行一些操作

  17. 17

    SBCL:在运行时收集运行程序进程的输出

  18. 18

    SBCL:在运行时收集运行程序进程的输出

  19. 19

    在 Delphi 中运行时如何运行命令行程序并发送密钥?

  20. 20

    将程序转换为使用函数,现在运行时什么也不做

  21. 21

    运行时在框架应用程序中调用超时

  22. 22

    当我运行程序时出现运行时错误,但在使用调试器时却没有

  23. 23

    当我运行程序时出现运行时错误,但在使用调试器时却没有

  24. 24

    使用runtime.getruntime命令通过Java代码运行时,该命令无法成功执行

  25. 25

    如何使用VirtualBox执行程序设置Gitlab运行程序

  26. 26

    如何从Java中的运行时执行获取实时输出?

  27. 27

    在运行时在Java中执行.exe或.linux文件

  28. 28

    运行时类型转换

  29. 29

    无法使用PhantomJS运行程序调用require('fs')

热门标签

归档