There are a number of different ways to create an Image
object from raw bytes.
The easiest is with the java.awt.image.MemoryImageSource
class. This class implements the java.awt.image.ImageProducer
interface as will all classes that create images.
public MemoryImageSource(int width, int height, int[] pixels, int offset, int scan)
public MemoryImageSource(int width, int height, ColorModel cm, byte[] pixels,
int offset, int scan)
public MemoryImageSource(int width, int height, ColorModel cm, byte[] pixels,
int offset, int scan, Hashtable props)
public MemoryImageSource(int width, int height, ColorModel cm, int[] pixels,
int offset, int scan)
public MemoryImageSource(int width, int height, ColorModel cm, int[] pixels,
int offset, int scan, Hashtable properties)
There are five different constructors in the MemoryImageSource
class. for now let's concentrate on the first:
public MemoryImageSource(int width, int height, int[] pixels, int offset, int scan)
width
is the width of the image in pixels. height
is the height of the image in pixels.
pixels
is an int
array that contains the actual image
data. Each int
in the array is a 32-bit quantity containing the RGB-transparency value for one pixel. offset
is the index in the array where the image data starts. scan
is the number of pixels in each line of the array. Most of the time this is the same as width
.
To create an image you first fill an array with the data for the image, then
use that array to construct a new MemoryImageSource
. Then you pass the MemoryImageSource
to the createImage()
method of the Component
class to actually produce an Image
object.