weixin_42298998
2010-06-30 09:05
浏览 228
已采纳

请教tomcat5.5配置MagickImage的问题

我想做一个将上传的图片进行清晰压缩的功能,所以想用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就跳出来。搞了好久都没能弄好,希望有朋友能帮忙解答一下。谢谢!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • iteye_8679 2010-07-01 09:33
    已采纳

    QQ:330800515 我看看能不能帮到你
    我用过5.0 5.5 6.0的还没有遇到你这样的问题

    打赏 评论
  • iteye_8679 2010-06-30 15:31

    呵呵,本人配置了多次都没有遇到这样的问题,你上面的安装配置做了很多没有必要的操作,

    所有.dll文件都拷到C:\WINDOWS\system32下
    将文件jmagick.dll 拷到 java.library.path下面
    将jmagick.jar复制WEB-INF下lib中,
    就可以了,看你的情况应该是你的tomcat的环境没有配置好的问题,
    再检查下吧

    打赏 评论

相关推荐 更多相似问题