我想使用JMagick调整图像大小。
import magick.ImageInfo;
import magick.MagickImage;
public class JMagicInfoa {
public static void main(String args[]){
try{
ImageInfo origInfo = new ImageInfo(args[0]); //load image info
MagickImage image = new MagickImage(origInfo);
image = image.scaleImage(1000, 1000);
image.setFileName(args[1]); //give new location
image.writeImage(origInfo);
}catch (Exception e) {
e.printStackTrace();
}
}
}
我遇到以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: D:Program FilesImageMagick-6.8.6-Q16jmagick.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at magick.MagickLoader.<clinit>(MagickLoader.java:13)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at magick.Magick.<clinit>(Magick.java:21)
at JMagicInfo.JMagicInfoa.main(JMagicInfoa.java:10)
我搜索了64位的JMagick.dll,但在任何地方都找不到。
有没有其他选择可以在64位机器上运行此程序。
编辑
我用32位替换了64位JDK,现在遇到以下错误:
java.lang.UnsatisfiedLinkError: D:Program FilesImageMagick-6.8.6-Q16jmagick.dll: %1 is not a valid Win32 application
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
第二次编辑
上面的代码在32位机器上正常工作。它不仅适用于64位机器。
请建议
您可以尝试使用32位版本的JDK。它适用于我
您应该将jmagick.dll放在C:\Windows\SysWOW64中,这样dll就会链接到其他32位dll。还将以下参数放入VM参数-Djava.library.path="C:\Windows\SysWOW64"