Package com.twelvemonkeys.image
Class BufferedImageFactory
- java.lang.Object
-
- com.twelvemonkeys.image.BufferedImageFactory
-
public final class BufferedImageFactory extends java.lang.Object
A faster, lighter and easier way to convert anImage
to aBufferedImage
than using aPixelGrabber
. Clients may provide progress listeners to monitor conversion progress.Supports source image subsampling and source region extraction. Supports source images with 16 bit
ColorModel
andDataBuffer.TYPE_USHORT
transfer type, without converting to 32 bit/TYPE_INT.NOTE: Does not support images with more than one
ColorModel
or different types of pixel data. This is not very common.- Version:
- $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/image/BufferedImageFactory.java#1 $
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
BufferedImageFactory.Consumer
static interface
BufferedImageFactory.ProgressListener
This interface allows clients of aBufferedImageFactory
to receive notifications of decoding progress.
-
Field Summary
Fields Modifier and Type Field Description private java.awt.image.BufferedImage
buffered
private java.awt.image.ColorModel
colorModel
private BufferedImageFactory.Consumer
consumer
private ImageConversionException
consumerException
private boolean
fetching
private int
height
private java.util.List<BufferedImageFactory.ProgressListener>
listeners
private int
offset
private int
percentageDone
private java.awt.image.ImageProducer
producer
private boolean
readColorModelOnly
private int
scanSize
private java.awt.image.ColorModel
sourceColorModel
private java.lang.Object
sourcePixels
private java.util.Hashtable<?,?>
sourceProperties
private int
width
private int
x
private int
xSub
private int
y
private int
ySub
-
Constructor Summary
Constructors Constructor Description BufferedImageFactory(java.awt.Image source)
Creates aBufferedImageFactory
.BufferedImageFactory(java.awt.image.ImageProducer source)
Creates aBufferedImageFactory
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
abort()
Aborts the image production.void
addProgressListener(BufferedImageFactory.ProgressListener listener)
Adds a progress listener to this factory.private void
createBuffered()
private void
createColorModel()
void
dispose()
Frees resources used by thisBufferedImageFactory
.private void
doFetch(boolean colorModelOnly)
private void
freeResources()
java.awt.image.BufferedImage
getBufferedImage()
Returns theBufferedImage
extracted from the givenImageSource
.java.awt.image.ColorModel
getColorModel()
Returns theColorModel
extracted from the givenImageSource
.private void
processProgress(int scanline)
void
removeAllProgressListeners()
Removes all progress listeners from this factory.void
removeProgressListener(BufferedImageFactory.ProgressListener listener)
Removes a progress listener from this factory.void
setSourceRegion(java.awt.Rectangle region)
Sets the source region (AOI) for the new image.void
setSourceSubsampling(int xSubsampling, int ySubsampling)
Sets the source subsampling for the new image.private static short[]
toShortPixels(int[] inputPixels)
Converts an array ofint
pixels to an array ofshort
pixels.
-
-
-
Field Detail
-
listeners
private java.util.List<BufferedImageFactory.ProgressListener> listeners
-
percentageDone
private int percentageDone
-
producer
private java.awt.image.ImageProducer producer
-
consumerException
private ImageConversionException consumerException
-
fetching
private volatile boolean fetching
-
readColorModelOnly
private boolean readColorModelOnly
-
x
private int x
-
y
private int y
-
width
private int width
-
height
private int height
-
xSub
private int xSub
-
ySub
private int ySub
-
offset
private int offset
-
scanSize
private int scanSize
-
sourceColorModel
private java.awt.image.ColorModel sourceColorModel
-
sourceProperties
private java.util.Hashtable<?,?> sourceProperties
-
sourcePixels
private java.lang.Object sourcePixels
-
buffered
private java.awt.image.BufferedImage buffered
-
colorModel
private java.awt.image.ColorModel colorModel
-
consumer
private final BufferedImageFactory.Consumer consumer
-
-
Constructor Detail
-
BufferedImageFactory
public BufferedImageFactory(java.awt.Image source)
Creates aBufferedImageFactory
.- Parameters:
source
- the source image- Throws:
java.lang.IllegalArgumentException
- ifsource == null
-
BufferedImageFactory
public BufferedImageFactory(java.awt.image.ImageProducer source)
Creates aBufferedImageFactory
.- Parameters:
source
- the source image producer- Throws:
java.lang.IllegalArgumentException
- ifsource == null
-
-
Method Detail
-
getBufferedImage
public java.awt.image.BufferedImage getBufferedImage() throws ImageConversionException
Returns theBufferedImage
extracted from the givenImageSource
. Multiple requests will return the same image.- Returns:
- the
BufferedImage
- Throws:
ImageConversionException
- if the givenImageSource
cannot be converted for some reason.
-
getColorModel
public java.awt.image.ColorModel getColorModel() throws ImageConversionException
Returns theColorModel
extracted from the givenImageSource
. Multiple requests will return the same model.- Returns:
- the
ColorModel
- Throws:
ImageConversionException
- if the givenImageSource
cannot be converted for some reason.
-
dispose
public void dispose()
Frees resources used by thisBufferedImageFactory
.
-
abort
public void abort()
Aborts the image production.
-
setSourceRegion
public void setSourceRegion(java.awt.Rectangle region)
Sets the source region (AOI) for the new image.- Parameters:
region
- the source region
-
setSourceSubsampling
public void setSourceSubsampling(int xSubsampling, int ySubsampling)
Sets the source subsampling for the new image.- Parameters:
xSubsampling
- horizontal subsampling factorySubsampling
- vertical subsampling factor
-
doFetch
private void doFetch(boolean colorModelOnly) throws ImageConversionException
- Throws:
ImageConversionException
-
createColorModel
private void createColorModel()
-
createBuffered
private void createBuffered()
-
freeResources
private void freeResources()
-
processProgress
private void processProgress(int scanline)
-
addProgressListener
public void addProgressListener(BufferedImageFactory.ProgressListener listener)
Adds a progress listener to this factory.- Parameters:
listener
- the progress listener
-
removeProgressListener
public void removeProgressListener(BufferedImageFactory.ProgressListener listener)
Removes a progress listener from this factory.- Parameters:
listener
- the progress listener
-
removeAllProgressListeners
public void removeAllProgressListeners()
Removes all progress listeners from this factory.
-
toShortPixels
private static short[] toShortPixels(int[] inputPixels)
Converts an array ofint
pixels to an array ofshort
pixels. The conversion is done, by masking out the higher 16 bits of theint
.For any given
int
, theshort
value is computed as follows:short value = (short) (intValue & 0x0000ffff);
- Parameters:
inputPixels
- the pixel data to convert- Returns:
- an array of
short
s, same length asinputPixels
-
-