我想做一个将上传的图片进行清晰压缩的功能,所以想用MagickImage来实现,google了一下,找了很多资料,也按步骤配置了,可是每次在上传的时候tomcat就自动跳出来。调了好久都没效果,希望有朋友能帮忙一下。以下是我配置的步骤和图片压缩的代码:1、下载ImageMagick-6.6.2-9-Q16-windows-dll.exe并安装,安装后系统会自动在环境变量path中添加值C:\Program Files\ImageMagick-6.6.2-Q16。2、将ImageMagick-6.6.2-9-Q16-windows-dll安装目录下的所有.dll文件都拷到C:\WINDOWS\system32下。3、下载jmagick-win-6.3.9-Q16.zip并解压,解压后,将文件jmagick.dll拷到C:\WINDOWS\system32下和jdk的bin目录下各一份。4、将jmagick.jar复制到Tomcat下的lib文件夹里 和 所使用项目的WEB-INF下lib文件里 各一份。5、将jmagick.jar复制一份到jdk\jre\lib\ext目录下(有人说这步骤也可以通过在java脚本中加上一句:static{System.setProperty("jmagick.systemclassloader","no");}来实现)。目前我们是两种方法都做上去的。6、代码:
//该方法为将图片按比率高清压缩为150*120范围内的缩略图,在上传函数中调用。
//参数:filePath为上传图片的路径,toPath为压缩后图片的路径。
public boolean scale(String filePath, String toPath) throws Exception {
  System.setProperty("jmagick.systemclassloader","no");
  boolean sf = false;
  ImageInfo info = null;
  MagickImage image = null;
  Dimension imageDim = null;
  MagickImage scaled = null;
  try {
  info = new ImageInfo(filePath);
  image = new MagickImage(info);
  imageDim = image.getDimension();
  float width = imageDim.width;
  float height = imageDim.height;
  float bl = 1;
  float bl_w = width / 150;
  float bl_h = height / 120;
  if (bl_w >= bl_h) {
  bl = bl_w;
  }
  else {
  bl = bl_h;
  }
  width = width / bl;
  height = height / bl;
  int new_width = (int) width;
  int new_height = (int) height;
  scaled = image.scaleImage(new_width, new_height);
  scaled.setFileName(toPath);
  scaled.writeImage(info);
  sf = true;
  }
  catch (Exception ex) {
  sf = false;
  }
  finally {
  if (scaled != null) {
  scaled.destroyImages();
  }
  }
  return sf;
}
我按以上方式配置后,每次上传的时候,tomcat5.5就自动跳出消失。
上网找了下,有人说是jvm内存的问题,说要在tomcat/bin/catalina.bat文件中加上语句:
set JAVA_OPTS=%JAVA_OPTS% -Xms256M -Xmx768M -XX:MaxPermSize=128M – Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager – Djava.util.logging.config.file=”${catalina.base}\conf\logging.properties”由于我装的tomcat5.5是ext版本的,bin目录下并没有catalina.bat文件,所以我就下载了tomcat5.5.zip版本,从里面的bin目录中拷贝出catalina.bat和setclasspath.bat这两个文件到我的tomcat5.5下面的bin目录下。并将上述语句加到catalina.bat中。但我这样做了,问题还是存在,还是老问题,一上传就tomcat就跳出来。搞了好久都没能弄好,希望有朋友能帮忙解答一下。谢谢!