用户上传图片然后生成缩略图显示。以下的代码是本人修改后的。提供给需要的朋友参考参考
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
- <servlet>
- <servlet-name>ImageHandlerServlet</servlet-name>
- <servlet-class>com.web.util.ImageHandlerServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>ImageHandlerServlet</servlet-name>
- <url-pattern>/imageHandlerServlet</url-pattern>
- </servlet-mapping>
index.jsp
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Insert title here</title>
- </head>
- <body>
- <!--
- imgPath指定一张图片的路径
- -->
- <img SRC="imageHandlerServlet?imgPath=d:/img/11.gif"/>
- </body>
- </html>
以上的实现只支持".jpg", ".gif", ".png", ".jpeg"格式