用户上传图片然后生成缩略图显示。以下的代码是本人修改后的。提供给需要的朋友参考参考
ImageHandlerServlet 类
package com.web.util;
import java.awt.image.BufferedImage;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.web.util.PicZoom;
public class ImageHandlerServlet extends HttpServlet{
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
//图片的路径
String srcImgFileName = request.getParameter("imgPath");
if(null == srcImgFileName || "".equals(srcImgFileName)) {
throw new ServletException("图像参数错误!");
}
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
//调用PicZoom类的静态方法zoom对原始图像进行缩放。
BufferedImage buffImg = PicZoom.zoom(srcImgFileName);
//创建JPEG图像编码器,用于编码内存中的图像数据到JPEG数据输出流。
JPEGImageEncoder jpgEncoder = JPEGCodec.createJPEGEncoder(sos);
//编码BufferedImage对象到JPEG数据输出流。
jpgEncoder.encode(buffImg);
sos.close();
}
}
这行代码需要从界面接收一张图片的路径String srcImgFileName = request.getParameter("imgPath");
PicZoom类
package com.web.util;
import java.awt.Color;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import javax.swing.ImageIcon;
public class PicZoom {
private static final int WIDTH = 50; //缩略图宽度
private static final int HEIGHT = 50;//缩略图高度
public static BufferedImage zoom(String srcFileName) {
//使用源图像文件名创建ImageIcon对象。
ImageIcon imgIcon = new ImageIcon(srcFileName);
//得到Image对象。
Image img = imgIcon.getImage();
return zoom(img);
}
public static BufferedImage zoom(Image srcImage) {
//构造一个预定义的图像类型的BufferedImage对象。
BufferedImage buffImg = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
// buffImg.flush();
//创建Graphics2D对象,用于在BufferedImage对象上绘图。
Graphics2D g = buffImg.createGraphics();
//设置图形上下文的当前颜色为白色。
g.setColor(Color.WHITE);
//用图形上下文的当前颜色填充指定的矩形区域。
g.fillRect(0, 0, WIDTH, HEIGHT);
//按照缩放的大小在BufferedImage对象上绘制原始图像。
g.drawImage(srcImage, 0, 0, WIDTH, HEIGHT, null);
//释放图形上下文使用的系统资源。
g.dispose();
//刷新此 Image 对象正在使用的所有可重构的资源.
srcImage.flush();
return buffImg;
}
}
web.xml
ImageHandlerServlet
com.web.util.ImageHandlerServlet
ImageHandlerServlet
/imageHandlerServlet
index.jsp
pageEncoding="utf-8"%>
Insert title here以上的实现只支持".jpg", ".gif", ".png", ".jpeg"格式