诶,烦,求教,在网上找到的制作缩略图的代码
//-----------------------上传完成,开始生成缩略图-------------------------
                        String filename = su.getFiles().getFile(0).getFileName()+"";
                        String saveurl = request.getRealPath("/")+folder+"/"+filename;
                        String url = folder+"/";
                        java.io.File file = new java.io.File(saveurl); //读入刚才上传的文件
                        String newurl=request.getRealPath("/")+url+"min_"+filename; //新的缩略图保存地址
                        Image src = javax.imageio.ImageIO.read(file); //构造Image对象                        int old_w=src.getWidth(null); //得到源图宽
                        int old_h=src.getHeight(null);
                        int new_w=0;
                        int new_h=0; //得到源图长
                        int tempsize;
                        float tempdouble;
                        if(old_w>old_h){
                        tempdouble=old_w/tagsize;
                        }else{
                        tempdouble=old_h/tagsize;
                        }
                        new_w=Math.round(old_w/tempdouble);
                        new_h=Math.round(old_h/tempdouble);//计算新图长宽
                        BufferedImage image = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);//创建一个BufferedImage来作为图像*作容器                        image.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); //绘制缩小后的图
                        FileOutputStream newimage = new FileOutputStream(newurl); //输出到文件流
                        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
                        encoder.encode(image); //近JPEG编码
                        newimage.close();我用这个在windows下用的挺好,可我上传到我的linux服务器上就不行了,郁闷
下面是错误代码:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /jspsmart.jsp at line 8582:                         image.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); //绘制缩小后的图
83:                         FileOutputStream newimage = new FileOutputStream(newurl); //输出到文件流
84:                         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
85:                         encoder.encode(image); //近JPEG编码
86:                         newimage.close();
87: 
88:                         /**
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.NullPointerException
org.apache.jsp.jspsmart_jsp._jspService(jspsmart_jsp.java:157)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.28 logs.
--------------------------------------------------------------------------------Apache Tomcat/6.0.28

解决方案 »

  1.   

    encoder.encode(image); //近JPEG编码这个在linux下运行不了?
      

  2.   

    LZ的linux系统中没安装Xwindow吧。网上的那些生成缩略图的,貌似都跟这个Xwindow有关的。
      

  3.   

    你把"/" 替换成 java.io.File.separator,windows和linux下都适用String url = folder + java.io.File.separator;
      

  4.   

    tomcat的启动参数加上
    -Djava.awt.headless=true