Chapter 11. Image Guts

The java.awt.image.BufferedImage class is the centerpiece of the 2D API's new image capabilities. Its parent, java.awt.Image, represents an image but doesn't offer easy access to the image data. Now, with the addition of BufferedImage, applications can twiddle image bits to their hearts' content.

Making image data accessible was no easy task for the designers of the 2D API. There are many strategies for representing the colors in an image and for storing the pixel data in memory. BufferedImage was designed to be general enough to support any image data format you could imagine.

In this chapter, I'll start by describing the BufferedImage class. Then I'll peel back the layers, one by one, to show you what's inside a BufferedImage. Eventually, we'll be staring at the image's data arrays, face-to-face with the raw bits. After that, I'll take you through a practical example that shows how to load data from a Portable Network Graphics (PNG) format file.

This chapter contains the nuts and bolts information you'll need if you're implementing file format encoders or if you're one of those people who'll read it because it's there. If you have passing curiosity about the innards of BufferedImage, the first section or two may contain everything you need to know. If you're going to do a lot of pixel-level manipulation, you should read the rest of the chapter.

Get Java 2D Graphics now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.