FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Java
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
October 19, 2007
Custom Image Processing in Java

(Page 1 of 4)
Chet Haase and Romain Guy
The Java 2D API offers several powerful facilities to perform image processing. Using the built-in BufferedImageOp classes, you can write your own custom filters very quickly

Chet and Romain are authors of Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java Applications, on which this article is based. Published by Addison-Wesley Professional, ISBN 0132413930; Copyright 2008 Sun Microsystems, Inc.

Image-processing tools such as Adobe Photoshop and The GIMP offer a wide variety of filters you can apply on your pictures to create various special effects. When you are designing a user interface, it is very tempting to use those effects. For instance, you could use a filter to blur an out-of- focus element in the UI. You could also increase the brightness of an image as the user moves the mouse over a component.

Image Filters

Despite the impressive-looking results, image processing is not a difficult task to implement. Processing an image, or applying a filter, is just a matter of calculating a new color for each pixel of a source image. The information required to compute the new pixels varies greatly from one filter to another. Some filters, a grayscale filter for instance, need only the current color of a pixel; other filters, such as a sharpening filter, may also need the color of the surrounding pixels; still other filters, such as a rotation filter, may need additional parameters.

Since the introduction of Java 2D in J2SE 1.2, Java programmers have access to a straightforward image-processing model. You might have learned or read about the old producer-consumer model of Java 1.1. If you did, forget everything you know about it because the new model is much easier and more versatile. Java 2D's image-processing model revolves around the java.awt.image.BufferedImage class and the java.awt.image.BufferedImageOp interface.

A BufferedImageOp implementation takes a BufferedImage as input, called the source, and outputs another BufferedImage, called the destination, which is altered according to specific rules. Figure 1 shows how a blur filter produces the final image.

While the JDK does not offer concrete image filters, it does provide the foundations for you to create your own. If you need a sharpening or blurring filter, for example, you must know how to provide parameters to a ConvolveOp filter. We teach you such techniques in Filthy Rich Clients. Before we delve further into image processing theory, let's see how we can use a BufferedImageOp to process an image.

Figure 1 Filtering an image with Java 2D.

1 Image Filters | 2 Processing an Image with BufferedImageOp | 3 Custom BufferedImageOp | 4 A Note about Filters Performance Next Page
RELATED ARTICLES
No Related Articles
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK