|
Appendix D Image Loading |
|
The classes in sun.awt.image
do the behind-the-scenes work for rendering an image from a file or across
the network. This information is purely for the curious; you should never
have to work with these classes yourself.
- Image
-
The Image class in this package
represents a concrete Image
instance. It contains the basis for the Image
class that is actually used on the run-time platform, which exists in the
package for the specific environment. For instance, the sun.awt.win32
package includes the W32Image
( Java 1.0), the sun.awt.windows
package includes WImage ( Java
1.1), while the sun.awt.motif
package includes the X11Image,
and the sun.awt.macos package
includes the MacImage.
- ImageRepresentation
-
The ImageRepresentation is
the ImageConsumer that watches
the creation of the image and notifies the ImageObserver
when it is time to update the display. It plays an important part in the
overall control of the Image
production process.
- Image sources
-
A Java image can come from
three different sources: memory (through createImage()),
local disk, or the network (through getImage()).
-
OffScreenImageSource implements
ImageProducer for a single framed image in
memory. When an Image created from an
OffScreenImageSource is drawn with
drawImage(), the ImageObserver
parameter can be null since all the image
information is already in memory and there is no need for periodic
updating as more is retrieved from disk. You can get the graphics
context of OffScreenImageSource images and use the
context to draw on the image area. This is how double buffering works.
- InputStreamImageSource implements
ImageProducer for an image that comes from disk or
across the network. When an Image created from an
InputStreamImageSource is drawn with
drawImage(), the ImageObserver
parameter should be the component being drawn on (usually
this) since the image information will be loaded
periodically with the help of the ImageObserver
interface). This class determines how to decode the image type and
initializes the ImageDecoder to one of
GifImageDecoder,
JPEGImageDecoder, or
XbmImageDecoder, although that can be overridden by
a subclass. It can use a ContentHandler to work
with unknown image types.
- FileImageSource is a subclass of
InputStreamImageSource for images that come from
the filesystem. It uses the filename to determine the type of image
to decode and checks the security manager to ensure that access is
allowed.
- URLImageSource is a subclass of
InputStreamImageSource for images that are
specified by a URL.
- ByteArrayImageSource ( Java 1.1 only) is a subclass
of InputStreamImageSource for images that are
created by calling Toolkit.createImage(byte[]).
- Image decoders
-
An ImageDecoder is utilized
to convert the image source to an image object. If there is no decoder
for an image type, it can be read in with the help of a ContentHandler
or your own class that implements ImageProducer,
like the PPMImageDecoder shown
in Chapter 12, Image Processing.
- GifImageDecoder reads in an image file in the GIF format.
- JPEGImageDecoder reads in an image file in the JPEG format.
- XbmImageDecoder reads in an image file in the XBM
format. Although XBM support is not required by the language
specification, support is provided with Netscape Navigator, Internet
Explorer, HotJava, and the Java Developer's Kit from Sun.
- ImageFetcher
-
The ImageFetcher class fetches
the actual image from its source. This class creates a separate daemon
thread to fetch each image. The thread is run at a higher priority than
the default but not at the maximum priority.
|
|