deadbeef.Tools
Class PngEncoderB

java.lang.Object
  extended by deadbeef.Tools.PngEncoder
      extended by deadbeef.Tools.PngEncoderB

public class PngEncoderB
extends PngEncoder

PngEncoderB takes a Java BufferedImage object and creates a byte string which can be saved as a PNG file. The encoder will accept BufferedImages with eight-bit samples or 4-byte ARGB samples.

There is also code to handle 4-byte samples returned as one int per pixel, but that has not been tested.

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

Version:
1.5, 19 Oct 2003 (modified by 0xdeadbeef in 2009) CHANGES:
--------
19-Sep-2003 : Fix for platforms using EBCDIC (contributed by Paulo Soares);
19-Oct-2003 : Change private fields to protected fields so that
PngEncoderB can inherit them (JDE)
Fixed bug with calculation of nRows
Added modifications for unsigned short images
(contributed by Christian at xpogen.com)
Author:
J. David Eisenberg - modified by 0xdeadbeef (added tRNS tag for transparency in palette mode)

Field Summary
 
Fields inherited from class deadbeef.Tools.PngEncoder
ENCODE_ALPHA, FILTER_LAST, FILTER_NONE, FILTER_SUB, FILTER_UP, NO_ALPHA
 
Constructor Summary
PngEncoderB()
          Class constructor.
PngEncoderB(java.awt.image.BufferedImage image)
          Class constructor specifying BufferedImage to encode, with no alpha channel encoding.
PngEncoderB(java.awt.image.BufferedImage image, boolean encodeAlpha)
          Class constructor specifying BufferedImage to encode, and whether to encode alpha.
PngEncoderB(java.awt.image.BufferedImage image, boolean encodeAlpha, int whichFilter)
          Class constructor specifying BufferedImage to encode, whether to encode alpha, and filter to use.
PngEncoderB(java.awt.image.BufferedImage image, boolean encodeAlpha, int whichFilter, int compLevel)
          Class constructor specifying BufferedImage source to encode, whether to encode alpha, filter to use, and compression level.
 
Method Summary
 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.
 void setImage(java.awt.image.BufferedImage image)
          Set the BufferedImage to be encoded.
 
Methods inherited from class deadbeef.Tools.PngEncoder
getCompressionLevel, getEncodeAlpha, getFilter, setCompressionLevel, setEncodeAlpha, setFilter, setImage
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PngEncoderB

public PngEncoderB()
Class constructor.


PngEncoderB

public PngEncoderB(java.awt.image.BufferedImage image)
Class constructor specifying BufferedImage to encode, with no alpha channel encoding.

Parameters:
image - A Java BufferedImage object

PngEncoderB

public PngEncoderB(java.awt.image.BufferedImage image,
                   boolean encodeAlpha)
Class constructor specifying BufferedImage to encode, and whether to encode alpha.

Parameters:
image - A Java BufferedImage object
encodeAlpha - Encode the alpha channel? false=no; true=yes

PngEncoderB

public PngEncoderB(java.awt.image.BufferedImage image,
                   boolean encodeAlpha,
                   int whichFilter)
Class constructor specifying BufferedImage to encode, whether to encode alpha, and filter to use.

Parameters:
image - A Java BufferedImage object
encodeAlpha - Encode the alpha channel? false=no; true=yes
whichFilter - 0=none, 1=sub, 2=up

PngEncoderB

public PngEncoderB(java.awt.image.BufferedImage image,
                   boolean encodeAlpha,
                   int whichFilter,
                   int compLevel)
Class constructor specifying BufferedImage source to encode, whether to encode alpha, filter to use, and compression level.

Parameters:
image - A Java BufferedImage object
encodeAlpha - Encode the alpha channel? false=no; true=yes
whichFilter - 0=none, 1=sub, 2=up
compLevel - 0..9
Method Detail

setImage

public void setImage(java.awt.image.BufferedImage image)
Set the BufferedImage to be encoded.

Parameters:
image - A Java BufferedImage object

pngEncode

public 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.

Overrides:
pngEncode in class PngEncoder
Parameters:
encodeAlpha - boolean false=no alpha, true=encode alpha
Returns:
an array of bytes, or null if there was a problem

pngEncode

public byte[] pngEncode()
Creates an array of bytes that is the PNG equivalent of the current image. Alpha encoding is determined by its setting in the constructor.

Overrides:
pngEncode in class PngEncoder
Returns:
an array of bytes, or null if there was a problem