为什么这个im4java在java中给出了异常

时间:2014-10-02 13:11:24

标签: java im4java

我希望为我的客户提供在使用Java开发的应用程序中调整图像大小和水印的功能。在搜索互联网之后,我通过简单地添加它为im4java库提供了我的应用程序。我看到了不同的文章并得到了这段代码:

try 
{
    IMOperation op = new IMOperation();
    op.addImage("d:\\abc.jpg");
    op.addImage("d:\\def.jpg");
    new ConvertCmd().run(op);
} 
catch (IOException | InterruptedException | IM4JavaException e) 
{
    System.out.println(e.toString());
}

它将异常视为

org.im4java.core.CommandException: org.im4java.core.CommandException: Invalid Parameter - d:\def.jpg

为什么会这样?

1)我是否必须在我的电脑上安装任何外部库,而不仅仅是将im4java库添加到我的应用程序中?

2)如果我必须在我的电脑上安装某种其他库,那么我的客户也必须在他们的机器上安装它或者是他们的任何解决方案吗?

在这个问题How do you resize an image using im4java?中,答案说我需要一个接口,这意味着什么?如果我以某种方式在我的机器上安装此接口,我的客户将需要做什么?这样可以像H2数据库一样嵌入,这样我的客户就不必安装除我的软件以外的任何其他东西吗?

1 个答案:

答案 0 :(得分:10)

im4java只是ImageMagick的包装器,这是一个旧的学校工具链,可以从命令行启动,然后处理图像。如果你没有安装ImageMagick,事情根本就不起作用!

您遇到的org.im4java.core.CommandException可能是由同名的convert.exe引起的,Windows上的内置磁盘实用程序可以将FAT卷转换为NTFS的

解决问题的可行方法是使用可移植版本的ImageMagick。对于Windows,只需下载zip文件(ImageMagick-6.8.9-8-Q16-x86-windows.zip,版本可能会有所不同)并将其解压缩。对于其他平台,最好从源代码构建可移植版本。

将ImageMagick实用程序移植后,可以将它们放在相对于程序的位置,然后添加额外的ProcessStarter.setGlobalSearchPath(...)行以指定代码开头的搜索路径。然后,您可以将它们(便携式ImageMagick,im4java,您的程序......)发送给您的客户。