java之图形绘制

java之图形绘制:https://blog.csdn.net/xietansheng/article/details/55669157

package login;


import java.awt.BasicStroke;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;




/**
 * Servlet implementation class CreateImageServlet
 * 服务器端绘图,输出到浏览器
 */
@WebServlet("/CreateImageServlet")
public class CreateImageServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CreateImageServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
// 图形大小
int width=100,height=30;
// 建立内存图像
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
// 从图像中取得图形对象,也就是画笔
Graphics g = image.getGraphics();
//设置画笔粗细
BasicStroke stroke = new BasicStroke(3); // 创建宽度是3的笔画对象


//从上面的代码可以建立一个内存图像,并从中取得Graphics对象。我们知道,所有的图形都是以Graphics对象来绘制的,
//例如,画一个方框的代码如下:
//设置矩形的边框颜色,要在绘制之前设置
//g.setColor(Color.GREEN);
//// 在坐标为(10,10)的位置画一个大小为100*100大小的方框,
//g.drawRect(10,10,100,100);
Random r = new Random();//随机数
////设置填充的颜色
//g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255))); 
////绘制填充矩形
//g.fillRect(10,10,80,80); 
////设置文字颜色 ,这个设置在fillRect()之后,对之前的不其作用,只对下面的绘制起作用
//g.setColor(new Color(120,50,220)); 
//设置字体
Font font=new Font("宋体",Font.BOLD,16);
g.setFont(font);
////生成随机数
String number = String.valueOf(r.nextInt(99999)); //画到图片上
g.drawString(number,15, 25);//吧文字绘制到图型上
////绘制直线
g.drawLine(50, 50, 200, 250);

/**
 *  // 1. 绘制一条圆弧: 椭圆的外切矩形 左上角坐标为(0, 0), 宽100, 高100,
            //                弧的开始角度为0度, 需要绘制的角度数为-90度,
            //                椭圆右边水平线为0度, 逆时针为正角度, 顺时针为负角度
 * 
 * 
 * */
////绘制弧形
//g.setColor(Color.RED);
//g.drawArc(0, 0, 100, 100, 0, -90);
////绘制圆形
//g.drawArc(120, 20, 100, 100, 0, 360);
//g.setColor(Color.BLUE);
//
////绘制椭圆
//g.fillOval(120, 100, 100, 150);

//绘制图片
Image imag = Toolkit.getDefaultToolkit().getImage("48.png");
System.out.println(imag);
g.drawImage(imag, 5, 5,null);

//图形绘制好后,下一步就是将图形输出到web。
// 将ContentType设为"image/jpeg", 以让浏览器识别图像格式。
	response.setContentType("image/jpeg");
//输出方法一: 建立JPEG图像编码器,将BufferedImage编码成jpeg格式输出到response的输出流。
//JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(response.getOutputStream());
//JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
//param.setQuality(1.0F, true);
// encoder.encode(image, param);

////输出方法二:在jdk1.4开始,引入了一个新的imageio库,提供了一个新的工具类ImageIO来进行图像的输出和输出操作。使用ImageIO进行图像的输出操作,可使代码更加简洁,如下:
ImageIO.setUseCache(false);
// 将图像以jpg格式写入到输出流。
ImageIO.write(image, "jpg", response.getOutputStream());
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
	
	
	
	 /**
	  * 绘制缩略图
	 * @param inputstream
	 * @throws Exception
	 * 所谓缩略图就是将原图以一定比例缩小
	 */
	public void drawReduceImage(InputStream inputstream) throws Exception {
	// 读入原始图的image对象
	BufferedImage src = ImageIO.read(inputstream);
	// 得到原图的宽度和高度
     int wideth=src.getWidth(); 
	int height=src.getHeight(); 
	 // 生成原图1/2大小的内存图像,你也可以指定固定大小
	BufferedImage taget = new BufferedImage(wideth/2,height/2,BufferedImage.TYPE_INT_RGB);
	// 将原图绘制在缩小后的内存图像上 
	taget.getGraphics().drawImage(src,0,0,wideth/2,height/2,null); 
		
	 }
}

猜你喜欢

转载自blog.csdn.net/u011146511/article/details/87807972