我想为我的客户提供在使用Java开发的应用程序中调整图像大小和给图像加水印的功能。搜索Internet之后,我通过简单地添加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库外,我是否还需要在PC上安装任何外部库?
2)如果我必须在PC上安装某种其他库,那么我的客户是否也必须在他们的计算机上也安装它,或者他们有什么解决方案吗?
在How do you resize an image using im4java?这个问题中,一个回答说我需要一个接口,这意味着什么?而且,如果我以某种方式在计算机上安装了此接口,我的客户将必须做什么?难道不能像H2数据库那样嵌入它,这样我的客户就不必安装除我的软件以外的任何东西了吗?
最佳答案
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,您的程序...)一起运送给客户。