first commit
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
import java.awt.*;
|
||||
import java.awt.image.*;
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* OFImage is a class that defines an image in OF (Objects First) format.
|
||||
*
|
||||
* @author Michael Kölling and David J. Barnes.
|
||||
* @version 1.1
|
||||
*/
|
||||
public class OFImage extends BufferedImage
|
||||
{
|
||||
/**
|
||||
* Create an OFImage copied from a BufferedImage.
|
||||
* @param image The image to copy.
|
||||
*/
|
||||
public OFImage(BufferedImage image)
|
||||
{
|
||||
super(image.getColorModel(), image.copyData(null),
|
||||
image.isAlphaPremultiplied(), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an OFImage with specified size and unspecified content.
|
||||
* @param width The width of the image.
|
||||
* @param height The height of the image.
|
||||
*/
|
||||
public OFImage(int width, int height)
|
||||
{
|
||||
super(width, height, TYPE_INT_RGB);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a given pixel of this image to a specified color. The
|
||||
* color is represented as an (r,g,b) value.
|
||||
* @param x The x position of the pixel.
|
||||
* @param y The y position of the pixel.
|
||||
* @param col The color of the pixel.
|
||||
*/
|
||||
public void setPixel(int x, int y, Color col)
|
||||
{
|
||||
int pixel = col.getRGB();
|
||||
setRGB(x, y, pixel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the color value at a specified pixel position.
|
||||
* @param x The x position of the pixel.
|
||||
* @param y The y position of the pixel.
|
||||
* @return The color of the pixel at the given position.
|
||||
*/
|
||||
public Color getPixel(int x, int y)
|
||||
{
|
||||
int pixel = getRGB(x, y);
|
||||
return new Color(pixel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this image a bit darker.
|
||||
*/
|
||||
public void darker()
|
||||
{
|
||||
int height = getHeight();
|
||||
int width = getWidth();
|
||||
for(int y = 0; y < height; y++) {
|
||||
for(int x = 0; x < width; x++) {
|
||||
setPixel(x, y, getPixel(x, y).darker());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this image a bit lighter.
|
||||
*/
|
||||
public void lighter()
|
||||
{
|
||||
int height = getHeight();
|
||||
int width = getWidth();
|
||||
for(int y = 0; y < height; y++) {
|
||||
for(int x = 0; x < width; x++) {
|
||||
setPixel(x, y, getPixel(x, y).brighter());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a three level threshold operation.
|
||||
* That is: repaint the image with only three color values:
|
||||
* white, gray, and black.
|
||||
*/
|
||||
public void threshold()
|
||||
{
|
||||
int height = getHeight();
|
||||
int width = getWidth();
|
||||
for(int y = 0; y < height; y++) {
|
||||
for(int x = 0; x < width; x++) {
|
||||
Color pixel = getPixel(x, y);
|
||||
int brightness = (pixel.getRed() + pixel.getBlue() + pixel.getGreen()) / 3;
|
||||
if(brightness <= 85) {
|
||||
setPixel(x, y, Color.BLACK);
|
||||
}
|
||||
else if(brightness <= 170) {
|
||||
setPixel(x, y, Color.GRAY);
|
||||
}
|
||||
else {
|
||||
setPixel(x, y, Color.WHITE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user