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

	<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"格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 缩略图透明功能可以通过使用 Java 的图像处理库来实现。以下是一种常见的实现方式: 1. 导入所需要的 Java 图像处理库,比如 ImageIO 和 BufferedImage。 2. 使用 ImageIO 类的静态方法读取原始的图片文件,并将其转换成 BufferedImage 对象。 3. 创建一个新的 BufferedImage 对象,用于存储生成的缩略图。 4. 调用 Graphics2D 类的 create 方法,创建一个 Graphics2D 对象,用于在新的 BufferedImage 上绘制图像。 5. 设置 Graphics2D 对象的绘制透明度。 6. 调用 Graphics2D 对象的 drawImage 方法,将原始图片绘制到新的 BufferedImage 上。 7. 调用 Graphics2D 对象的 dispose 方法,释放绘图资源。 8. 使用 ImageIO 类的静态方法将新的 BufferedImage 对象保存为图片文件。 简单的代码示例: ```java import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ThumbnailCreator { public static void main(String[] args) { try { File originalFile = new File("original.jpg"); // 读取原始图片 BufferedImage originalImage = ImageIO.read(originalFile); // 创建缩略图 int thumbnailWidth = 100; int thumbnailHeight = 100; BufferedImage thumbnailImage = new BufferedImage(thumbnailWidth, thumbnailHeight, BufferedImage.TYPE_INT_ARGB); // 绘制透明缩略图 Graphics2D graphics2D = thumbnailImage.createGraphics(); graphics2D.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); graphics2D.drawImage(originalImage, 0, 0, thumbnailWidth, thumbnailHeight, null); graphics2D.dispose(); // 保存缩略图 File thumbnailFile = new File("thumbnail.png"); ImageIO.write(thumbnailImage, "png", thumbnailFile); } catch (IOException e) { e.printStackTrace(); } } } ``` 上述代码将原始图片 "original.jpg" 缩放为100x100的缩略图,并使用 0.5 的透明度绘制在新的图片上,然后保存为 "thumbnail.png"。可以根据需要调整缩略图的尺寸和透明度值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值