博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之图形绘制
阅读量:4291 次
发布时间:2019-05-27

本文共 4389 字,大约阅读时间需要 14 分钟。

java之图形绘制:

 

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); 			 }}

 

转载地址:http://vmmgi.baihongyu.com/

你可能感兴趣的文章
JDK1.5(jdk5.0)新特性
查看>>
JDK1.6(jdk6.0)新特性
查看>>
java中的集合存储结构
查看>>
java中的集合存储结构
查看>>
Java基础——对象和类,类中的变量和方法
查看>>
谈谈JDBC
查看>>
jdbc_API中的说明
查看>>
jdbc_javax包
查看>>
Android 6.0 APIs_新特性(google官方)
查看>>
maxwell斗胆也来谈谈"学习方法“_转自黑马论坛
查看>>
XML解析
查看>>
AndroidManifest.xml详解
查看>>
activity的xml详解
查看>>
JNI 简介与实现-JavaNativeInterface
查看>>
ResourceBundle和Properties
查看>>
javascript *** is not a function
查看>>
老韩思考:卖点----卖豆腐的能转行IT
查看>>
Android_属性动画
查看>>
网络下载-xUtils,HttpUtils
查看>>
网络下载-AsyncHttpClient
查看>>