java 图片缩略图_java 缩略图实现

用户上传图片然后生成缩略图显示。以下的代码是本人修改后的。提供给需要的朋友参考参考

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

11.gif

以上的实现只支持".jpg", ".gif", ".png", ".jpeg"格式


版权声明:本文为weixin_29955689原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。