`
wuzijingaip
  • 浏览: 331702 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 生成图片并在页面显示

阅读更多
imageBean:
package com.c.elmer.util.image;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

public class ImageBean {
	
	
	int width = 100;
	int height = 100;
	
	int imagewidth = 100;
	int imageheight = 100;
	
	Color defaultBG = new Color(217,233,243);
	
	BufferedImage image = null;
	Graphics2D g = null;
	
	public BufferedImage getImage() {
		g.dispose();
		image.flush();
		return image;
	}

	public ImageBean(int width,int height){
		this.width = width ;
		this.height = height;
		image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		g = image.createGraphics();
		g.setBackground(defaultBG);
		g.setColor(new Color(140,201,253));
	}
	
	public ImageBean(int width,int height,int imgwidth,int imgheight){
		this.width = width ;
		this.height = height;
		this.imagewidth = imgwidth;
		this.imageheight = imgheight;
		
		this.height = imgheight*width/imgwidth;
		
		image = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_RGB);
		g = image.createGraphics();
		g.clipRect(0, 0, this.width, this.height);
		g.setBackground(defaultBG);
		g.setColor(new Color(242,242,242));
		g.fillRect( 0,0,this.width,this.height);
		g.setColor(new Color(210,224,242));
		g.drawRect(1, 1, this.width - 2, this.height - 2);
//		System.out.println(g.getBackground().toString());
	}
	
	/**
	 * <p>取比</p>
	 * @param a
	 * @return
	 */
	public int percentXY(int x,int width,int imgwidth){
		return (imgwidth*x) / width;
	}
	
	
	public ImageBean setBgColor(Color c){
		g.setBackground(c);
		return this;
	}
	
	
	public ImageBean set3dRect(boolean is3d){
		if(is3d){
			g.draw3DRect(0, 0, width - 1, height - 1, true);
		}
		return this;
	}
	
	public ImageBean setText(String text,String style){
		g.setColor(Color.red);
		if(style.equals("top")){
			g.drawString(text,  0, 12);
		}
		if(style.equals("center")){
			g.drawString(text, this.width - this.width/2-30, this.height/2);
		}
		if(style.equals("bottom")){
			g.drawString(text, this.width - this.width/2-30, this.height-20);
		}
		return this;
	}

	public ImageBean addRect(int x,int y,int width,int height,Color c,String text){
		x = percentXY(x,this.imagewidth,this.width);
		y =  percentXY(y,this.imageheight,this.height);
		int w = percentXY(width,this.imagewidth,this.width);
		int h =  percentXY(height,this.imageheight,this.height);
		
		g.setColor(new Color(14,159,241));
		g.setBackground(defaultBG);
		g.drawRect( x , y , w, h);
		g.drawString(text, x + 2, y + 10);
		return this;
	}
	public ImageBean fillRect(int x,int y,int width,int height,Color c,String text){
		x = percentXY(x,this.imagewidth,this.width);
		y =  percentXY(y,this.imageheight,this.height);
		int w = percentXY(width,this.imagewidth,this.width);
		int h =  percentXY(height,this.imageheight,this.height);
		
		g.setColor(c);
		g.setBackground(defaultBG);
		g.fillRect( x , y , w, h);
		g.drawString(text, x + 2, y + 20);
		return this;
	}

	public int getImageheight() {
		return imageheight;
	}

	public void setImageheight(int imageheight) {
		this.imageheight = imageheight;
	}

	public int getImagewidth() {
		return imagewidth;
	}

	public void setImagewidth(int imagewidth) {
		this.imagewidth = imagewidth;
	}
	
	

}



java servlet:

package com.ibox.util;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.c.elmer.util.image.ImageBean;
import com.provideo.ibox.model.dao.ModelDAO;
import com.provideo.ibox.model.forms.ModelLocationsBean;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class CreateImage extends HttpServlet {

	public CreateImage() {
		super();
	}

	public void destroy() {
		super.destroy();
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	Color getRandColor(int fc, int bc) {// 给定范围获得随机颜色
		Random random = new Random();
		if (fc > 255)
			fc = 255;
		if (bc > 255)
			bc = 255;
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}
	
	public BufferedImage getImage(){
		int width = 100;
		int height = 100;
		BufferedImage bi = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		Graphics2D g = bi.createGraphics();
		g.setBackground(Color.BLUE);
		g.clearRect(0, 0, width, height);
		g.setColor(Color.RED);
		g.dispose();
		bi.flush();
		return bi;
	}

	private void createImage(OutputStream out) {
		int width = 100;
		int height = 100;
		int allwidth = 1024;
		int allheight = 888;
		BufferedImage bi = 
			new ImageBean(width,height,allwidth,allheight)
			.setBgColor(new Color(217,233,243))
			.set3dRect(true)
			.addRect(22, 222,288,234 , Color.red, "")
			.addRect(400, 200,300,500, Color.green, "")
			.addRect(2, 500,400,444 , Color.BLUE, "")
			.getImage();
		/*
		BufferedImage bi = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		Graphics2D g = bi.createGraphics();
		// set background:
		g.setBackground(new Color(217,233,243));
		g.setColor(new Color(140,201,253));
		g.clearRect(0, 0, width, height);
		g.drawRect(0, 0, 44, 33);
		g.drawArc(32, 45, 78, 54, 45, 222);
		
//		g.drawOval(12, 12, 45, 45);
//		g.drawRoundRect(21, 5, 48, 55, 55, 55);
		
		g.setColor(new Color(242,242,242));
		g.drawString("Power Ibox", 12, 93);
		
		g.draw3DRect(0, 0, width - 1, height - 1, true);
		// set fore color:
		g.setColor(Color.RED);
		// start draw:
		g.drawLine(0, 66, 100, 66);
		g.drawLine(66, 0, 66, 66);
		// end draw:
		g.dispose();
		bi.flush();
		// encode:
		*/
		
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
		JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
		param.setQuality(1.0f, false);
		encoder.setJPEGEncodeParam(param);
		try {
			encoder.encode(bi);
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		ModelDAO dao = new ModelDAO();
		int tid = 246 ;
		if(request.getParameter("tid") != null){
			tid = Integer.parseInt(request.getParameter("tid"));
		}
		int width = 100;
		if(request.getParameter("width") != null){
			width = Integer.parseInt(request.getParameter("width"));
		}
		String model = "default";
		if(request.getParameter("model") != null){
			model = request.getParameter("model");
		}
		String tname = "";
		List list = dao.getModelLocationById(tid);
		
		int height = 100;
		int allwidth = 1024;
		int allheight = 888;
		BufferedImage bi = null;
		ImageBean imgbean = null;
		for(int i=0;i<list.size();i++){
			ModelLocationsBean bean = (ModelLocationsBean) list.get(i);
			String wh = bean.getWh();
			int w = Integer.parseInt( wh.split("x")[0]);
			int h = Integer.parseInt( wh.split("x")[1]);
			imgbean = new ImageBean(width,height,w,h);
			tname = bean.getTname();
			break;
		}
		
		for(int i=0;i<list.size();i++){
			ModelLocationsBean bean = (ModelLocationsBean)list.get(i);
			String location = bean.getLocation();
			String[] ls = location.split("x");
			
			int w = Integer.parseInt(ls[0]);
			
			String l = ls[1];
			
			l = l.replace("-", "+-").replace("+", " ");
			String[] htl = l.split(" ");
			
			int h = Integer.parseInt( htl[0]);
			int top = Integer.parseInt( htl[1]);
			int left = Integer.parseInt( htl[2]);
			
			String type = bean.getType();
			String text = "";
			Color c = new Color(217,233,243);
			if(type.equals("1")){
				c = new Color(147,165,180);
				text = "video";
			}
			else if(type.equals("2")){
				c = new Color(248,165,180);
				text = "pic";
			}
			else if(type.equals("3")){
				c = new Color(176,165,122);
				text = "flash";
			}
			else if(type.equals("4")){
				c = new Color(219,222,223);
				text = "text";
			}
			else if(type.equals("5")){
				c = new Color(219,237,225);
				text = "url";
			}
			else if(type.equals("6")){
				c = new Color(147,165,180);
				text = "live";
			}
			else if(type.equals("7")){
				c = new Color(248,165,122);
				text = "ppt";
			}
			
			if(model.equals("default")){
				c = Color.red;
				imgbean.setText(tname, "top");
				imgbean.addRect(top, left, w, h, c, "");
			}
			if(model.equals("text")){
				c = Color.red;
				imgbean.addRect(top, left, w, h, c, text);
			}
			if(model.equals("name")){
				c = Color.red;
				imgbean.setText(tname, "top");
				imgbean.addRect(top, left, w, h, c, text);
			}
			if(model.equals("empty")){
				imgbean.addRect(top, left, w, h, c, "");				
			}
			if(model.equals("fill")){
				imgbean.setText(tname, "top");
				imgbean.fillRect(top, left, w, h, c, "");				
			}
		}
		bi = imgbean.getImage();

		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
		JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
		param.setQuality(1.0f, false);
		encoder.setJPEGEncodeParam(param);
		try {
			encoder.encode(bi);
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
		
		
//		response.setContentType("image/jpeg");
//		createImage(response.getOutputStream());
		
		/*
		//阻止生成的页面内容被缓存,保证每次重新生成验证码  
		response.setContentType("image/jpeg");  
		
		BufferedImage image = getImage();
		
		ImageIO.write(image,"JPEG",response.getOutputStream()); */
	}

	public void init() throws ServletException {
		// Put your code here
	}

}



web.xml:

  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>CreateImage</servlet-name>
    <servlet-class>com.ibox.util.CreateImage</servlet-class>
  </servlet>



页面:
<img id="iboxitem<%=i %>" width="70" src="${pageContext.request.contextPath }/servlet/CreateImage?tid=<%=bean.getOid() %>&model=text" name="tempimgs" style="-moz-opacity:0.5; filter:alpha(opacity=50);cursor:hand;" onmouseover="imgMouseOver(this)" onmouseout="imgMoused(this);" onclick="tempImgClicked(<%=bean.getOid() %>,this,'<%=bean.getTname() %>')" />
 



最后效果:
这是从个人项目中剪下来的,(代码也是,不同需求可以更简单)

  • 大小: 15.9 KB
0
1
分享到:
评论

相关推荐

    java 生成图片

    在Java编程语言中,生成图片是一项常见的任务,尤其在数据可视化、报告生成或者网页动态内容制作等场景。这里我们将深入探讨如何使用Java根据配置文件批量生成图片。 首先,要生成图片,我们需要理解Java中的图像...

    java使用Servlet动态生成图片

    Java 使用 Servlet 动态生成图片 在 Web 应用中,经常需要动态生成图片,如实时股市行情、各种统计图等等。这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。本质上,浏览器向...

    Java将PDF生成图片

    在IT行业中,将PDF文档转换为图片是一种常见的需求,特别是在数据可视化、网页预览或移动端显示PDF内容时。Java作为一种广泛使用的编程语言,提供了多种库和工具来实现这个功能。以下是一些关于“Java将PDF生成图片...

    JFreeChart生成图片并显示

    在这个例子中,`showchart.htm`可能是一个HTML页面,它通过JavaScript或Ajax请求上述Java方法来获取图表并显示在页面上。`showverifycode.jsp`可能是用于生成验证码的页面,它也可能利用类似的技术来创建图像并返回...

    java生成一维码

    总之,Java生成一维码主要依赖于第三方库,如ZXing。通过这些库,可以方便地将数据编码为一维码图像,然后在各种应用场景中使用,如网页、打印标签等。在实际开发中,还需要考虑到错误处理、一维码格式的选择以及与...

    java实现图片上传并显示

    提交表单后,图片会被上传到服务器,并在页面上显示出来。 这个过程中涉及的关键技术点包括Struts2的Action和Result机制、Apache Commons FileUpload的使用、文件的服务器存储、数据库操作以及前端页面的交互。理解...

    java上传图片后立即将图片显示出来

    在Java开发中,图片上传并实时显示是一项常见的需求,特别是在Web应用中。本文将深入探讨如何利用Java技术实现在图片上传后立即在页面上显示。首先,我们需要理解这个过程涉及的关键技术点,包括文件上传、文件处理...

    Java 保存HTML为图片

    在IT行业中,将HTML页面转换为图片是一种常见的需求,例如用于网页截图或者生成预览图。Java作为一种强大的后端开发语言,提供了多种方法来实现这一功能。本篇将详细讲解如何利用Struts2框架,结合Java的相关技术,...

    将JSP在内存生成的图片显示到页面

    6. **浏览器显示**:当浏览器接收到这些二进制流后,会将其解析为JPEG图片并显示在页面上。 这个示例展示了如何在JSP中处理图片生成和显示的基本流程。值得注意的是,`autoFlush="false"`属性用于控制JSP页面的缓冲...

    Java生成图片验证码

    为了在实际应用中使用这个验证码,还需要将其显示在Web页面上,或者通过网络传输到客户端。这通常涉及到HTTP响应的设置,将图片数据以二进制形式发送。在Web环境中,可以使用Servlet来实现这一功能。 在提供的`...

    通过URL地址获取网页生成jpg图片

    本教程将详细介绍如何通过URL地址获取网页并生成jpg图片,同时解决32位和64位运行环境下的兼容性问题。我们将主要使用Java语言来实现这一功能,因为它具有丰富的库和跨平台的特性。 首先,我们需要一个能够处理网络...

    如何解决java html转pdf图片不显示问题的源码范例合集new(由浅入深代码范例和详细说明).docx

    在 Java 开发中,经常需要将 HTML 转换为 PDF,并希望在生成的 PDF 中正确显示 HTML 中的图片。但是,由于 HTML 和 PDF 的格式差异,可能会遇到图片不显示的问题。为了解决这个问题,本文将介绍使用 iText 和 Flying...

    SpringMVC生成的验证码图片不显示问题及解决方法

    在本例中,验证码图片生成成功,但是却不显示在页面上。问题的原因可能是由于浏览器的缓存机制,导致验证码图片不被刷新。解决方法是设置浏览器不要缓存该图片,使用response.setHeader()方法设置Pragma、Cache-...

    java生成图形.doc

    Java生成图形主要是指在Web环境中利用编程技术来创建和展示图表,以便于数据可视化。在传统的桌面应用程序中,可以借助操作系统提供的控件来构建用户界面,但在Web环境下,由于客户端的多样性和浏览器的限制,这种...

    java二维码生成 网页显示

    本文将深入探讨如何使用Java生成二维码并将其在网页上展示。 首先,我们需要理解二维码(Quick Response Code)是一种二维条形码,能够存储比传统条形码更多的信息,如网址、文本、联系信息等。在Java中,我们可以...

    java生成二维码图片到页面.zip

    本项目"java生成二维码图片到页面"显然是关于如何在Java环境中将二维码图像生成并展示到Web页面上的实践示例。 首先,我们需要了解生成二维码的关键步骤。在Java中,常用的库有ZXing(Zebra Crossing)和qrcode4j,...

    java 后台 生成的表格通过HtmlImageGenerator(Html2Image) 生成图片

    Java 后台生成的表格通常用于数据展示,但有时我们需要将这些动态生成的表格转换为图片格式,以便于分享、打印或保存。这就涉及到一个工具——HtmlImageGenerator,也称为Html2Image。这个工具能够将HTML页面转化为...

    如何解决java html转pdf图片不显示问题的源码范例(由浅入深代码范例和详细说明).docx

    如果图片是相对路径,需要确保在转换时,图片文件与生成的 PDF 在同一个目录下或者提供绝对路径。另外,对于网络上的图片,需要下载到本地再进行转换,因为 FlyingSaucer 不支持直接从 URL 加载图片。 为了处理这些...

    Java在线生成图像源码

    本项目是基于Struts框架,通过Action进行业务处理,在内存中生成图像,并直接显示在JSP页面上,无需保存到硬盘。 首先,我们来理解一下Struts框架。Struts是Apache组织开发的一个开源MVC框架,用于构建结构化的Web...

Global site tag (gtag.js) - Google Analytics