public class FSImageWriter
extends java.lang.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
.
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.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DEFAULT_IMAGE_FORMAT |
Constructor and Description |
---|
FSImageWriter()
New image writer for the PNG image format
|
FSImageWriter(java.lang.String imageFormat)
New writer for a given image format, using the informal format name.
|
Modifier and Type | Method and Description |
---|---|
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(java.lang.String type)
Compression type for images to be generated from this writer.
|
void |
write(java.awt.image.BufferedImage bimg,
java.io.OutputStream os)
Writes the image out to the target file, creating the file if necessary, or overwriting if it already
exists.
|
void |
write(java.awt.image.BufferedImage bimg,
java.lang.String filePath)
Writes the image out to the target file, creating the file if necessary, or overwriting if it already
exists.
|
public static final java.lang.String DEFAULT_IMAGE_FORMAT
public FSImageWriter()
public FSImageWriter(java.lang.String imageFormat)
imageFormat
- Informal image format name, e.g. "jpg", "png", "bmp"; usually the part that appears
as the file extension.public static FSImageWriter newJpegWriter(float quality)
quality
- level of compression, between 0 and 1; 0 is lowest, 1 is highest quality.public void write(java.awt.image.BufferedImage bimg, java.lang.String filePath) throws java.io.IOException
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.java.io.IOException
- If the file could not be written.public void write(java.awt.image.BufferedImage bimg, java.io.OutputStream os) throws java.io.IOException
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.java.io.IOException
- If the file could not be written.public void setWriteCompressionQuality(float q)
ImageWriteParam.setCompressionQuality(float)
for a description of what this means
and valid range of values.q
- Compression quality for image output.public void setWriteCompressionMode(int mode)
ImageWriteParam.setCompressionMode(int)
for a description of what this means
and valid range of values.mode
- Compression mode for image output.public void setWriteCompressionType(java.lang.String type)
ImageWriteParam.setCompressionType(String)
for a description of what this means
and valid range of values.type
- Type of compression for image output.