动态修改图片大小的java servlet源码

                                                        动态修改图片大小的java servlet

代码虽然比较简单,但做个标记,以便是后查找.

1.修改图片的java Servlet代码如下:

package  com.photo.gallery;

import  java.awt.AlphaComposite;
import  java.awt.Graphics2D;
import  java.awt.Image;
import  java.awt.image.BufferedImage;
import  java.io.File;
import  javax.imageio.ImageIO;
import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

public   class  ImageResizer  extends  HttpServlet  {
    
private static final long serialVersionUID = -8285774993751841288L;

    
public void doGet(HttpServletRequest request, HttpServletResponse response) {
        String imageOutput 
= getParam(request, "output""png");
        String imageRoot 
= getParam(request, "root""/albums");
        String imageFile 
= getParam(request, "file""/Album1/image1.jpg");
        
int width = Integer.parseInt(getParam(request, "width""250"));
        
int height = Integer.parseInt(getParam(request, "width""0"));
        
if ("png".equals(imageOutput))
            response.setContentType(
"image/png");
        
else
            response.setContentType(
"image/jpeg");
        String imageLoc 
= request.getSession().getServletContext().getRealPath(
                imageRoot)
                
+ imageFile;
        
try {
            BufferedImage bufferedImage 
= ImageIO.read(new File(imageLoc));
            
int calcHeight = height > 0 ? height : (width
                    
* bufferedImage.getHeight() / bufferedImage.getWidth());

            ImageIO.write(createResizedCopy(bufferedImage, width, calcHeight),
                    imageOutput, response.getOutputStream());
        }
 catch (Exception e) {
            log(
"Problem with image: " + imageLoc + e);
        }

    }


    BufferedImage createResizedCopy(Image originalImage, 
int scaledWidth,
            
int scaledHeight) {
        BufferedImage scaledBI 
= new BufferedImage(scaledWidth, scaledHeight,
                BufferedImage.TYPE_INT_RGB);
        Graphics2D g 
= scaledBI.createGraphics();
        g.setComposite(AlphaComposite.Src);
        g.drawImage(originalImage, 
00, scaledWidth, scaledHeight, null);
        g.dispose();
        
return scaledBI;
    }


    
private String getParam(HttpServletRequest request, String param, String def) {
        String parameter 
= request.getParameter(param);
        
if (parameter == null || "".equals(parameter)) {
            
return def;
        }
 else {
            
return parameter;
        }

    }

}

2.配置web.xml
<? xml version="1.0" encoding="UTF-8" ?>
< web-app  version ="2.4"  xmlns ="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
    
< servlet >
        
< servlet-name > image </ servlet-name >
        
< servlet-class > com.photo.gallery.ImageResizer </ servlet-class >
        
< load-on-startup > 1 </ load-on-startup >
    
</ servlet >
    
< servlet-mapping >
        
< servlet-name > image </ servlet-name >
        
< url-pattern > /image </ url-pattern >
    
</ servlet-mapping >

</ web-app >

3.在地址栏输出如下的连接:
http://localhost:8088/Javaimageresizer/image?root=/albums&file=/thumbs/imagename.jpg&width=270&height=100
即可查看效果

你可能感兴趣的:(动态修改图片大小的java servlet源码)