⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagefilter.java

📁 icsamples目录中有icsamples网络程序。 这个程序包括J2EE网络层的范例程序
💻 JAVA
字号:
package jwadbook.filter;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.ServletException;import java.io.*;import java.util.Date;import java.awt.*;import com.sun.image.codec.jpeg.JPEGImageEncoder;import java.awt.image.BufferedImage;/** * * @author Jian (James) Cai */public class ImageFilter implements Filter{    FilterConfig filterConfig;        public void init(final FilterConfig fConf)     {        filterConfig = fConf;    }    public void destroy()    {    }        public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain) throws java.io.IOException,    javax.servlet.ServletException    {	String message = "FilterMessage";	GenericResponseWrapper wrapper = new GenericResponseWrapper((HttpServletResponse)response);	chain.doFilter(request, wrapper);	OutputStream out = response.getOutputStream();	message = filterConfig.getInitParameter("message");	if (contentIsUncachedImage(wrapper) && message != null)	    {		ByteArrayOutputStream imageStream = manipulateImage(message, wrapper.output());		response.setContentLength(imageStream.size());		response.setContentType("image/jpeg");		out.write(imageStream.toByteArray());	    }	else	    {		out.write(wrapper.output());	    }	out.flush();	out.close();    }        public boolean contentIsUncachedImage(GenericResponseWrapper wrapper){	if(wrapper.getContentType()!=null)	    {		if(wrapper.getContentType().startsWith("image/"))		    {			if(wrapper.output().length>0){			    return true;			}		}	}	return false;    }            public ByteArrayOutputStream manipulateImage(String message, byte[] imageData) throws ServletException    {	ByteArrayOutputStream imageStream;	Frame frame=null;	Graphics graphics=null;	try	    {		frame = new Frame();		frame.addNotify();		MediaTracker mt = new MediaTracker(frame); // frame acts as an ImageObserver		Image image = Toolkit.getDefaultToolkit().createImage(imageData);		mt.addImage(image, 0);		mt.waitForAll();		int w = image.getWidth(frame);		int h = image.getHeight(frame);		BufferedImage offscreen = new BufferedImage(w,h,BufferedImage.TYPE_3BYTE_BGR);		graphics = offscreen.getGraphics();		graphics.drawImage(image, 0, 0, frame);		graphics.setColor(Color.white);		graphics.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 20));		graphics.drawString(message, 9, 29);		graphics.setColor(Color.black);		graphics.drawString(message, 10, 30);		imageStream = new ByteArrayOutputStream();		JPEGImageEncoder encoder=com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(imageStream);		encoder.encode(offscreen);	    }	catch (InterruptedException e)	    {		throw new ServletException(e.getMessage());	    }	catch (IOException e)	    {		throw new ServletException(e.getMessage());	    }	finally	    {		if (graphics != null)		    {			graphics.dispose();		    }		if (frame != null)		    {			frame.removeNotify();		    }	    }	return imageStream;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -