|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectrebuild.graphics.ImageEncoder
rebuild.graphics.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 |
crcValue
The CRC value. |
static boolean |
ENCODE_ALPHA
Constant specifying that alpha channel should be encoded. |
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 static byte[] |
IDAT
IDAT tag. |
protected static byte[] |
IEND
IEND tag. |
protected static byte[] |
IHDR
IHDR tag. |
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[] |
priorRow
The prior row. |
Fields inherited from class rebuild.graphics.ImageEncoder |
---|
compressionLevel, dataBytes, encodeAlpha, height, image, scaleX, scaleY, width, xOffset, yOffset |
Constructor Summary | |
---|---|
PNGEncoder()
Class constructor |
|
PNGEncoder(Bitmap image)
Class constructor specifying Image to encode, with no alpha channel encoding. |
|
PNGEncoder(Bitmap image,
boolean encodeAlpha)
Class constructor specifying Image to encode, and whether to encode alpha. |
|
PNGEncoder(Bitmap image,
boolean encodeAlpha,
int whichFilter)
Class constructor specifying Image to encode, whether to encode alpha, and filter to use. |
|
PNGEncoder(Bitmap 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 |
getFilter()
Retrieve filtering scheme |
java.lang.String |
getMime()
Get the MIME type of the image encoder. |
protected byte[] |
inEncode(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. |
void |
setCompressionLevel(int level)
Set the compression level to use |
void |
setFilter(int whichFilter)
Set the filter to use |
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 rebuild.graphics.ImageEncoder |
---|
encode, encode, getARGBByte, getARGBInt, getCompressionLevel, getEncodeAlpha, getIndex, getIndex, setEncodeAlpha, setImage |
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[] priorRow
protected byte[] leftBytes
protected int bytePos
protected int maxPos
protected int crcValue
protected int filter
protected int bytesPerPixel
Constructor Detail |
---|
public PNGEncoder()
public PNGEncoder(Bitmap image)
image
- A Java Image object which uses the DirectColorModelpublic PNGEncoder(Bitmap image, boolean encodeAlpha)
image
- A Java Image object which uses the DirectColorModelencodeAlpha
- Encode the alpha channel? false=no; true=yespublic PNGEncoder(Bitmap 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=uppublic PNGEncoder(Bitmap 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..9Method Detail |
---|
public java.lang.String getMime()
getMime
in class ImageEncoder
protected byte[] inEncode(boolean encodeAlpha) throws java.io.IOException
inEncode
in class ImageEncoder
encodeAlpha
- boolean false = no alpha, true = encode alpha
java.io.IOException
- If an error occurs.public void setFilter(int whichFilter)
whichFilter
- from constant listpublic int getFilter()
public void setCompressionLevel(int level)
setCompressionLevel
in class ImageEncoder
level
- 0 through 9protected 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() throws java.io.IOException
java.io.IOException
protected void writeEnd()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |