Asgn 5 Question 5

Download Q5.java.


Q5.java


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


class Face {
	void draw(Graphics2D g2) {
		// draw a circle as the face
		double radius = 150;
		Ellipse2D circle = new Ellipse2D.Double();
		circle.setFrameFromCenter(190, 180, 190 + radius, 180 + radius);
		g2.setPaint(Color.magenta);
		g2.draw(circle);

		// draw two rectangles as two eyes
		Rectangle2D rect_1 = new Rectangle2D.Double(120, 115, 35, 30);
		Rectangle2D rect_2 = new Rectangle2D.Double(215, 115, 35, 30);
		g2.setPaint(Color.blue);
		g2.fill(rect_1);
		g2.fill(rect_2);

		// draw the ellipse as the nose
		g2.setPaint(Color.green);
		Ellipse2D ellipse = new Ellipse2D.Double(165, 180, 50, 30);
		g2.draw(ellipse);
		g2.fill(ellipse);

		// draw a line as the mouth
		g2.setPaint(Color.red);
		g2.draw(new Line2D.Double(140, 260, 150 + 100, 250));
	}
}

public class Q5 {

	public void createImage(String filename) 
	{
		
		 
		int w = 360;
		int h = 360;

		BufferedImage img = new BufferedImage(w, h,
                    BufferedImage.TYPE_INT_RGB);
		Graphics2D g2 = img.createGraphics();
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
					RenderingHints.VALUE_ANTIALIAS_ON);
		// fill background
		Color bg = new Color(238,238,238);
		g2.setPaint(bg);
		g2.fillRect(0,0,w,h);

		// generate user image
		Face f = new Face();
		f.draw(g2);

		// write to file
		String format = "jpg";
		File file = new File(filename + "." + format);
		try {
			ImageIO.write(img, format, file);
		} catch (IOException e) {
			System.out.println("image write failed");
			//e.printStackTrace();
		}
	}



	public static void main(String[] args) {
		String name = "test";
		if (args.length>0) name = (args[0]);
		Q5 proj = new Q5();
		proj.createImage(name);
	}

}


Maintained by John Loomis, updated Sun Oct 06 17:24:08 2013