images
Class APImage

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by images.APImage
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.lang.Iterable<Pixel>, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class APImage
extends javax.swing.JFrame
implements java.lang.Iterable<Pixel>

LICENSE: This is open-source software released under the terms of the
GPL (http://www.gnu.org/licenses/gpl.html).

This class supports the processing of images.

Input image files must be in JPEG format. Output files are written in JPEG format.

Example program, which loads an image from a file dialog, converts it to grayscale, and draws it:

 import images.APImage;
 import images.Pixel;

 public class TestGrayscale{

    public static void main(String[]args){  
       APImage image = new APImage();
       for (Pixel p : image){
          int red = p.getRed();
          int green = p.getGreen();
          int blue = p.getBlue();
          int average = (red + green + blue) / 3;
          p.setRed(average);
          p.setGreen(average);
          p.setBlue(average);
       }
       image.draw();
    }
 }

You can reset maximum heap size when running the program if you run out of memory for large images, as follows:
java -Xmxnew Sizem programFileName
where newSize is an integer. For example,
java -Xmx128m TestGrayscale
allows up to 128 megabytes of heap space for the TestGrayscale program.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, PROPERTIES, SOMEBITS
 
Constructor Summary
APImage()
          Creates an image from a file dialog selection or creates a blank image if the user cancels.
APImage(int width, int height)
          Creates a blank image whose color is black.
APImage(java.lang.String fileName)
          Creates an image from a given file.
 
Method Summary
 APImage clone()
          Returns a copy of the image.
 void draw()
          Displays the image in its window.
 int getHeight()
          Returns the height of the image in pixels.
 Pixel getPixel(int x, int y)
          Returns the pixel at the given (x, y) position.
 int getWidth()
          Returns the width of the image in pixels.
 java.util.Iterator<Pixel> iterator()
          Returns an iterator on the image.
 boolean save()
          Saves the image under its current file name or runs saveAs if no file name yet.
 boolean saveAs()
          Saves the image using a file dialog.
 void setPixel(int x, int y, Pixel p)
          Resets the pixel at the given (x, y) position but does not redraw it.
 java.lang.String toString()
          Returns a string representation of the image (file name, width, and height).
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, setLocationRelativeTo, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, size, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Constructor Detail

APImage

public APImage(int width,
               int height)
Creates a blank image whose color is black.

Parameters:
width - the width of the image in pixels
height - the height of the image in pixels

APImage

public APImage(java.lang.String fileName)
Creates an image from a given file.

Parameters:
fileName - the name of the file
Throws:
java.lang.Exception - if the file does not exist or is not in JPEG format

APImage

public APImage()
Creates an image from a file dialog selection or creates a blank image if the user cancels.

Method Detail

getWidth

public int getWidth()
Returns the width of the image in pixels.

Overrides:
getWidth in class java.awt.Component
Returns:
the image's width in pixels

getHeight

public int getHeight()
Returns the height of the image in pixels.

Overrides:
getHeight in class java.awt.Component
Returns:
the image's height in pixels

getPixel

public Pixel getPixel(int x,
                      int y)
Returns the pixel at the given (x, y) position.

Parameters:
x - the column position of the pixel
y - the row position of the pixel
Returns:
the Pixel at the given (x, y) position

setPixel

public void setPixel(int x,
                     int y,
                     Pixel p)
Resets the pixel at the given (x, y) position but does not redraw it.

Parameters:
x - the column position of the pixel
y - the row position of the pixel
p - the new Pixel

draw

public void draw()
Displays the image in its window.


clone

public APImage clone()
Returns a copy of the image.

Overrides:
clone in class java.lang.Object
Returns:
an APImage representing a copy of this image

toString

public java.lang.String toString()
Returns a string representation of the image (file name, width, and height).

Overrides:
toString in class java.awt.Component
Returns:
a string representation of the image

iterator

public java.util.Iterator<Pixel> iterator()
Returns an iterator on the image.

Specified by:
iterator in interface java.lang.Iterable<Pixel>
Returns:
an Iterator on the image

save

public boolean save()
Saves the image under its current file name or runs saveAs if no file name yet.


saveAs

public boolean saveAs()
Saves the image using a file dialog.

Returns:
true if the save is successful, or false if the user cancels