我想为我的客户提供在用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) 如果我必须在我的电脑上安装某种其他库,那么我的客户也必须在他们的机器上安装它吗?或者他们有解决方案吗?
在这个问题中,如何使用im4java调整图像大小?,答案是我需要一个接口,这意味着什么?如果我以某种方式在我的机器上安装了这个接口,我的客户会怎么做?难道这不能像H2数据库一样嵌入吗?这样我的客户就不必安装除我的软件之外的任何其他东西了?
im4java只是ImageMagick的包装器,ImageMagick是一个老派工具链,可以从命令行启动,然后处理图像。如果你不安装ImageMagick,事情就根本无法运行!
您遇到的org.im4java.core.CommandException
可能是由同名的convert.exe引起的,convert.exe是Windows上的一个内置磁盘实用程序,可以将FAT卷转换为NTFS卷
解决问题的一个可行方法是使用ImageMagick的可移植版本。对于Windows,只需下载zip文件(ImageMagick6.8.9-8-Q16-x86-Windows.zip,版本可能有所不同)并提取即可。对于其他平台,最好从源代码构建可移植版本。
一旦您使ImageMagick实用程序可移植,您就可以将它们相对于程序放置,然后添加额外的ProcessStarter.setGlobalSearchPath(…)行,以在代码开头指定搜索路径。然后,您可以将它们(可移植的ImageMagick、im4java、您的程序…)一起发送给您的客户。