<< Chapter < Page | Chapter >> Page > |
Revised: Mon Apr 04 10:44:15 CDT 2016
This page is included in the following Books:
This module contains review questions and answers keyed to the module titled Java3028: Clipping Images .
The questions and the answers are connected by hyperlinks to make it easy for you to navigate from the question to the answer and back again.
Given the input image shown in Figure 1 , which of the following output images is produced by the code in Listing 1 ?
A. Figure 2
B. Figure 3
Listing 1 . Question 1. |
---|
/*File Java3028ra Copyright 2013 R.G.Baldwin
*********************************************************/import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;import java.awt.geom.Rectangle2D;
import java.awt.Graphics;import java.awt.geom.Ellipse2D;
import java.awt.Color;public class Java3028ra{
public static void main(String[]args){
new Java3028raRunner().run();}//end main method
}//end class Java3028ra//======================================================//
class Java3028raRunner{public void run(){
Picture pix = new Picture("Prob04a.jpg");pix = rotatePicture(pix,35);
pix = mirrorUpperQuads(pix);pix = mirrorHoriz(pix);
pix = clipToEllipse(pix);pix.explore();
}//end run//----------------------------------------------------//
private Picture clipToEllipse(Picture pix){Picture result =
new Picture(pix.getWidth(),pix.getHeight());result.setAllPixelsToAColor(Color.RED);
Graphics2D g2 = (Graphics2D)(result.getGraphics());Ellipse2D.Double ellipse =
new Ellipse2D.Double(28,64,366,275);g2.setClip(ellipse);
g2.drawImage(pix.getImage(),0,0,pix.getWidth(),pix.getHeight(),
null);return result;
}//end clipToEllipse//----------------------------------------------------//private Picture rotatePicture(Picture pix,
double angle){AffineTransform rotateTransform =
new AffineTransform();rotateTransform.rotate(Math.toRadians(angle),
pix.getWidth()/2,pix.getHeight()/2);
Rectangle2D rectangle2D =pix.getTransformEnclosingRect(rotateTransform);
int resultWidth = (int)(rectangle2D.getWidth());int resultHeight = (int)(rectangle2D.getHeight());
AffineTransform translateTransform =new AffineTransform();
translateTransform.translate((resultWidth - pix.getWidth())/2,
(resultHeight - pix.getHeight())/2);translateTransform.concatenate(rotateTransform);
Picture result = new Picture(resultWidth,resultHeight);
Graphics2D g2 = (Graphics2D)result.getGraphics();g2.drawImage(pix.getImage(),translateTransform,null);
return result;}//end rotatePicture
//----------------------------------------------------//private Picture mirrorUpperQuads(Picture pix){Pixel leftPixel = null;
Pixel rightPixel = null;int midpoint = pix.getWidth()/2;
int width = pix.getWidth();for(int row = 0;row<pix.getHeight()/2;row++){
for(int col = 0;col<midpoint;col++){
leftPixel = pix.getPixel(col,row);rightPixel = pix.getPixel(width-1-col,row);
rightPixel.setColor(leftPixel.getColor());}//end inner loop
}//end outer loopreturn pix;
}//end mirrorUpperQuads//----------------------------------------------------//
private Picture mirrorHoriz(Picture pix){Pixel topPixel = null;
Pixel bottomPixel = null;int midpoint = pix.getHeight()/2;
int height = pix.getHeight();for(int col = 0;col<pix.getWidth();col++){
for(int row = 0;row<midpoint;row++){
topPixel = pix.getPixel(col,row);bottomPixel = pix.getPixel(col,height-1-row);
bottomPixel.setColor(topPixel.getColor());}//end inner loop
}//end outer loopreturn pix;
}//end mirrorHoriz//----------------------------------------------------//
}//end class Java3028raRunner |
Figure 1 - Prob04a.jpg
Figure 2 - Possible output image.
Figure 3 - Possible output image.
What is the meaning of the following two images?
This image was inserted here simply to insert some space between the questions and the answers to keep them from being visible on the screen at thesame time.
The image is also an example of the kinds of things that we do in my course titled ITSE 2321, Object-Oriented Programming.
This image was also inserted for the purpose of inserting space between the questions and the answers.
The code in Listing 1 produces the output image shown in Figure 3 .
This section contains a variety of miscellaneous information.
Financial : Although the Connexions site makes it possible for you to download aPDF file for this module at no charge, and also makes it possible for you to purchase a pre-printed version of the PDF file, youshould be aware that some of the HTML elements in this module may not translate well into PDF.
I also want you to know that, I receive no financial compensation from the Connexions website even if you purchase the PDF version ofthe module.
In the past, unknown individuals have copied my modules from cnx.org, converted them to Kindle books, and placed them for sale onAmazon.com showing me as the author. I neither receive compensation for those sales nor do I know who does receive compensation. If youpurchase such a book, please be aware that it is a copy of a module that is freely available on cnx.org and that it was made andpublished without my prior knowledge.
Affiliation : I am a professor of Computer Information Technology at Austin Community College in Austin, TX.
-end-
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?