org.xhtmlrenderer.util
Class FSImageWriter

java.lang.Object
  extended by org.xhtmlrenderer.util.FSImageWriter

public class FSImageWriter
extends Object

Writes out BufferedImages to some outputstream, like a file. Allows image writer parameters to be specified and thus controlled. Uses the java ImageIO libraries--see ImageIO and related classes, especially ImageWriter.

By default, FSImageWriter writes BufferedImages out in PNG format. The simplest possible usage is

 FSImageWriter writer = new FSImageWriter();
 writer.write(img, new File("image.png"));
 

You can set the image format in the constructore (FSImageWriter(String), and can set compression settings using various setters; this lets you create writer to reuse across a number of images, all output at the same compression level. Note that not all image formats support compression. For those that do, you may need to set more than one compression setting, in combination, for it to work. For JPG, it might look like this

      writer = new FSImageWriter("jpg");
                writer.setWriteCompressionMode(ImageWriteParam.MODE_EXPLICIT);
                writer.setWriteCompressionType("JPEG");
                writer.setWriteCompressionQuality(.75f);
 

The method newJpegWriter(float) creates a writer for JPG images; you just need to specify the output quality. Note that for the JPG format, your image or BufferedImage shouldn't be ARGB.


Field Summary
static String DEFAULT_IMAGE_FORMAT
           
 
Constructor Summary
FSImageWriter()
          New image writer for the PNG image format
FSImageWriter(String imageFormat)
          New writer for a given image format, using the informal format name.
 
Method Summary
protected  ImageWriteParam getImageWriteParameters(ImageWriter writer)
          Returns the image output parameters to control the output image quality, compression, etc.
static FSImageWriter newJpegWriter(float quality)
          Convenience method for initializing a writer for the JPEG image format.
 void setWriteCompressionMode(int mode)
          Compression mode for images to be generated from this writer.
 void setWriteCompressionQuality(float q)
          Compression quality for images to be generated from this writer.
 void setWriteCompressionType(String type)
          Compression type for images to be generated from this writer.
 void write(BufferedImage bimg, OutputStream os)
          Writes the image out to the target file, creating the file if necessary, or overwriting if it already exists.
 void write(BufferedImage bimg, String filePath)
          Writes the image out to the target file, creating the file if necessary, or overwriting if it already exists.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_IMAGE_FORMAT

public static final String DEFAULT_IMAGE_FORMAT
See Also:
Constant Field Values
Constructor Detail

FSImageWriter

public FSImageWriter()
New image writer for the PNG image format


FSImageWriter

public FSImageWriter(String imageFormat)
New writer for a given image format, using the informal format name.

Parameters:
imageFormat - Informal image format name, e.g. "jpg", "png", "bmp"; usually the part that appears as the file extension.
Method Detail

newJpegWriter

public static FSImageWriter newJpegWriter(float quality)
Convenience method for initializing a writer for the JPEG image format.

Parameters:
quality - level of compression, between 0 and 1; 0 is lowest, 1 is highest quality.
Returns:
a writer for JPEG images

write

public void write(BufferedImage bimg,
                  String filePath)
           throws IOException
Writes the image out to the target file, creating the file if necessary, or overwriting if it already exists.

Parameters:
bimg - Image to write.
filePath - Path for file to write. The extension for the file name is not changed; it is up to the caller to make sure this corresponds to the image format.
Throws:
IOException - If the file could not be written.

write

public void write(BufferedImage bimg,
                  OutputStream os)
           throws IOException
Writes the image out to the target file, creating the file if necessary, or overwriting if it already exists.

Parameters:
bimg - Image to write.
os - outputstream to write to
Throws:
IOException - If the file could not be written.

getImageWriteParameters

protected ImageWriteParam getImageWriteParameters(ImageWriter writer)
Returns the image output parameters to control the output image quality, compression, etc. By default this uses the compression values set in this class. Override this method to get full control over the ImageWriteParam used in image output.

Parameters:
writer - The ImageWriter we are going to use for image output.
Returns:
ImageWriteParam configured for image output.

setWriteCompressionQuality

public void setWriteCompressionQuality(float q)
Compression quality for images to be generated from this writer. See ImageWriteParam.setCompressionQuality(float) for a description of what this means and valid range of values.

Parameters:
q - Compression quality for image output.

setWriteCompressionMode

public void setWriteCompressionMode(int mode)
Compression mode for images to be generated from this writer. See ImageWriteParam.setCompressionMode(int) for a description of what this means and valid range of values.

Parameters:
mode - Compression mode for image output.

setWriteCompressionType

public void setWriteCompressionType(String type)
Compression type for images to be generated from this writer. See ImageWriteParam.setCompressionType(String) for a description of what this means and valid range of values.

Parameters:
type - Type of compression for image output.


Copyright © 2013. All Rights Reserved.