/*************************************************************************
* Name:
* NetID:
* Precept:
*
* Description: Reads an image from a file, flips it vertically, horizontally,
* and both vertically & horizontally.
*
* Displays: three modified images and original image.
*************************************************************************/
import java.awt.Color;
public class ImageFlipper {
// returns a Picture where each pixel is mirrored horizontally
// does not modify input Picture
// Lecture Using Data Types pp 28-31
public static Picture flipH(Picture source) {
// create new Picture object - don't modify source
int width = source.width();
int height = source.height();
Picture target = new Picture(width, height);
// transpose EACH pixel around the horizontal axis
for (int col = 0; col < width; col++) {
for (int row = 0; row < height; row++) {
// get the pixel
Color pixel = source.get(col, row);
// now set the pixel at the position flipped around horizontal
target.set(col, height - row - 1, ______);
}
}
// all done
return ______;
}
// returns a Picture where each pixel is mirrored vertically
// does not modify input Picture
public static Picture flipV(___________) {
// create new Picture object - don't modify source
____________;
____________;
____________;
// transpose EACH pixel around the vertical axis
for (int col = 0; col < width; col++) {
for (int row = 0; row < height; row++) {
// get the pixel
Color pixel = source.get(col, row);
// now set the pixel at the position flipped around horizontal
target.set(______, ______, ______);
}
}
// all done
return ______;
}
// First command line argument contains name of file containing Picture,
// then displays four images:
// 1. Horizontally flipped.
// 2. Vertically flipped.
// 3. Flipped in both directions.
// 4. Original image.
public static void main(String[] args) {
// create original Picture object from filename on command line
Picture original = new Picture(args[0]);
// refers to flipped Picture
Picture flipped;
// flip the original Picture on the horizontal and show the result
flipped = flipH(original);
flipped.show();
// flip the original Picture on the vertical and show the result
________ = flipV(_________);
________.show();
// flip horizontal and then vertical
flipped = __________________;
flipped.show();
// show the original to demonstrate that it wasn't mutated
original.show();
}
}