|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.rosuda.util.PngEncoder
public class PngEncoder
PngEncoder takes a Java Image object and creates a byte string which can be saved as a PNG file. The Image is presumed to use the DirectColorModel.
Thanks to Jay Denny at KeyPoint Software http://www.keypoint.com/ who let me develop this code on company time.
You may contact me with (probably very-much-needed) improvements, comments, and bug fixes at:
david@catcode.com
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A copy of the GNU LGPL may be found at
http://www.gnu.org/copyleft/lesser.html
Field Summary | |
---|---|
protected int |
bytePos
The byte position. |
protected int |
bytesPerPixel
The bytes-per-pixel. |
protected int |
compressionLevel
The compression level. |
protected java.util.zip.CRC32 |
crc
CRC. |
protected long |
crcValue
The CRC value. |
static boolean |
ENCODE_ALPHA
Constant specifying that alpha channel should be encoded. |
protected boolean |
encodeAlpha
Encode alpha? |
protected int |
filter
The filter type. |
static int |
FILTER_LAST
Constants for filter (LAST) |
static int |
FILTER_NONE
Constants for filter (NONE) |
static int |
FILTER_SUB
Constants for filter (SUB) |
static int |
FILTER_UP
Constants for filter (UP) |
protected int |
height
The width. |
protected static byte[] |
IDAT
IDAT tag. |
protected static byte[] |
IEND
IEND tag. |
protected static byte[] |
IHDR
IHDR tag. |
protected java.awt.Image |
image
The image. |
protected byte[] |
leftBytes
The left bytes. |
protected int |
maxPos
The byte position. |
static boolean |
NO_ALPHA
Constant specifying that alpha channel should not be encoded. |
protected byte[] |
pngBytes
The png bytes. |
protected byte[] |
priorRow
The prior row. |
protected int |
width
The width. |
Constructor Summary | |
---|---|
PngEncoder()
Class constructor |
|
PngEncoder(java.awt.Image image)
Class constructor specifying Image to encode, with no alpha channel encoding. |
|
PngEncoder(java.awt.Image image,
boolean encodeAlpha)
Class constructor specifying Image to encode, and whether to encode alpha. |
|
PngEncoder(java.awt.Image image,
boolean encodeAlpha,
int whichFilter)
Class constructor specifying Image to encode, whether to encode alpha, and filter to use. |
|
PngEncoder(java.awt.Image image,
boolean encodeAlpha,
int whichFilter,
int compLevel)
Class constructor specifying Image source to encode, whether to encode alpha, filter to use, and compression level. |
Method Summary | |
---|---|
protected void |
filterSub(byte[] pixels,
int startPos,
int width)
Perform "sub" filtering on the given row. |
protected void |
filterUp(byte[] pixels,
int startPos,
int width)
Perform "up" filtering on the given row. |
int |
getCompressionLevel()
Retrieve compression level |
boolean |
getEncodeAlpha()
Retrieve alpha encoding status. |
int |
getFilter()
Retrieve filtering scheme |
byte[] |
pngEncode()
Creates an array of bytes that is the PNG equivalent of the current image. |
byte[] |
pngEncode(boolean encodeAlpha)
Creates an array of bytes that is the PNG equivalent of the current image, specifying whether to encode alpha or not. |
protected byte[] |
resizeByteArray(byte[] array,
int newLength)
Increase or decrease the length of a byte array. |
static boolean |
savePNG(java.io.File f,
PngEncoder png)
Added by SU: static method to create a PNG file from an encoder |
void |
setCompressionLevel(int level)
Set the compression level to use |
void |
setEncodeAlpha(boolean encodeAlpha)
Set the alpha encoding on or off. |
void |
setFilter(int whichFilter)
Set the filter to use |
void |
setImage(java.awt.Image image)
Set the image to be encoded |
protected int |
writeByte(int b,
int offset)
Write a single byte into the pngBytes array at a given position. |
protected int |
writeBytes(byte[] data,
int offset)
Write an array of bytes into the pngBytes array. |
protected int |
writeBytes(byte[] data,
int nBytes,
int offset)
Write an array of bytes into the pngBytes array, specifying number of bytes to write. |
protected void |
writeEnd()
Write a PNG "IEND" chunk into the pngBytes array. |
protected void |
writeHeader()
Write a PNG "IHDR" chunk into the pngBytes array. |
protected boolean |
writeImageData()
Write the image data into the pngBytes array. |
protected int |
writeInt2(int n,
int offset)
Write a two-byte integer into the pngBytes array at a given position. |
protected int |
writeInt4(int n,
int offset)
Write a four-byte integer into the pngBytes array at a given position. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final boolean ENCODE_ALPHA
public static final boolean NO_ALPHA
public static final int FILTER_NONE
public static final int FILTER_SUB
public static final int FILTER_UP
public static final int FILTER_LAST
protected static final byte[] IHDR
protected static final byte[] IDAT
protected static final byte[] IEND
protected byte[] pngBytes
protected byte[] priorRow
protected byte[] leftBytes
protected java.awt.Image image
protected int width
protected int height
protected int bytePos
protected int maxPos
protected java.util.zip.CRC32 crc
protected long crcValue
protected boolean encodeAlpha
protected int filter
protected int bytesPerPixel
protected int compressionLevel
Constructor Detail |
---|
public PngEncoder()
public PngEncoder(java.awt.Image image)
image
- A Java Image object which uses the DirectColorModelImage
public PngEncoder(java.awt.Image image, boolean encodeAlpha)
image
- A Java Image object which uses the DirectColorModelencodeAlpha
- Encode the alpha channel? false=no; true=yesImage
public PngEncoder(java.awt.Image image, boolean encodeAlpha, int whichFilter)
image
- A Java Image object which uses the DirectColorModelencodeAlpha
- Encode the alpha channel? false=no; true=yeswhichFilter
- 0=none, 1=sub, 2=upImage
public PngEncoder(java.awt.Image image, boolean encodeAlpha, int whichFilter, int compLevel)
image
- A Java Image objectencodeAlpha
- Encode the alpha channel? false=no; true=yeswhichFilter
- 0=none, 1=sub, 2=upcompLevel
- 0..9Image
Method Detail |
---|
public void setImage(java.awt.Image image)
image
- A Java Image object which uses the DirectColorModelImage
,
DirectColorModel
public byte[] pngEncode(boolean encodeAlpha)
encodeAlpha
- boolean false=no alpha, true=encode alpha
public byte[] pngEncode()
public void setEncodeAlpha(boolean encodeAlpha)
encodeAlpha
- false=no, true=yespublic boolean getEncodeAlpha()
public void setFilter(int whichFilter)
whichFilter
- from constant listpublic int getFilter()
public void setCompressionLevel(int level)
level
- 0 through 9public int getCompressionLevel()
protected byte[] resizeByteArray(byte[] array, int newLength)
array
- The original array.newLength
- The length you wish the new array to have.
protected int writeBytes(byte[] data, int offset)
data
- The data to be written into pngBytes.offset
- The starting point to write to.
protected int writeBytes(byte[] data, int nBytes, int offset)
data
- The data to be written into pngBytes.nBytes
- The number of bytes to be written.offset
- The starting point to write to.
protected int writeInt2(int n, int offset)
n
- The integer to be written into pngBytes.offset
- The starting point to write to.
protected int writeInt4(int n, int offset)
n
- The integer to be written into pngBytes.offset
- The starting point to write to.
protected int writeByte(int b, int offset)
b
- The integer to be written into pngBytes.offset
- The starting point to write to.
protected void writeHeader()
protected void filterSub(byte[] pixels, int startPos, int width)
pixels
- The array holding the scan lines being builtstartPos
- Starting position within pixels of bytes to be filtered.width
- Width of a scanline in pixels.protected void filterUp(byte[] pixels, int startPos, int width)
pixels
- The array holding the scan lines being builtstartPos
- Starting position within pixels of bytes to be filtered.width
- Width of a scanline in pixels.protected boolean writeImageData()
protected void writeEnd()
public static boolean savePNG(java.io.File f, PngEncoder png)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |