Class ImageIOUtil

java.lang.Object
org.apache.pdfbox.tools.imageio.ImageIOUtil

public final class ImageIOUtil extends Object
Handles some ImageIO operations.
  • Field Details

    • LOG

      private static final org.apache.commons.logging.Log LOG
      Log instance
  • Constructor Details

    • ImageIOUtil

      private ImageIOUtil()
  • Method Details

    • writeImage

      public static boolean writeImage(BufferedImage image, String filename, int dpi) throws IOException
      Writes a buffered image to a file using the given image format. The compression is set for maximum compression for PNG and maximum quality for all other file formats. See writeImage(BufferedImage image, String formatName, OutputStream output, int dpi, float compressionQuality) for more details.
      Parameters:
      image - the image to be written
      filename - used to construct the filename for the individual image. Its suffix will be used as the image format.
      dpi - the resolution in dpi (dots per inch) to be used in metadata
      Returns:
      true if the image file was produced, false if there was an error.
      Throws:
      IOException - if an I/O error occurs
    • writeImage

      public static boolean writeImage(BufferedImage image, String filename, int dpi, float compressionQuality) throws IOException
      Writes a buffered image to a file using the given image format. See writeImage(BufferedImage image, String formatName, OutputStream output, int dpi, float compressionQuality) for more details.
      Parameters:
      image - the image to be written
      filename - used to construct the filename for the individual image. Its suffix will be used as the image format.
      dpi - the resolution in dpi (dots per inch) to be used in metadata
      compressionQuality - quality to be used when compressing the image (0 < compressionQuality < 1.0f). See ImageWriteParam.setCompressionQuality(float) for more details.
      Returns:
      true if the image file was produced, false if there was an error.
      Throws:
      IOException - if an I/O error occurs
    • writeImage

      @Deprecated public static boolean writeImage(BufferedImage image, String formatName, String filename, int dpi) throws IOException
      Deprecated.
      use writeImage(BufferedImage image, String filename, int dpi), which uses the full filename instead of just the prefix.
      Writes a buffered image to a file using the given image format. See writeImage(BufferedImage image, String formatName, OutputStream output, int dpi, float compressionQuality) for more details.
      Parameters:
      image - the image to be written
      formatName - the target format (ex. "png") which is also the suffix for the filename
      filename - used to construct the filename for the individual image. The formatName parameter will be used as the suffix.
      dpi - the resolution in dpi (dots per inch) to be used in metadata
      Returns:
      true if the image file was produced, false if there was an error.
      Throws:
      IOException - if an I/O error occurs
    • writeImage

      public static boolean writeImage(BufferedImage image, String formatName, OutputStream output) throws IOException
      Writes a buffered image to a file using the given image format. The compression is set for maximum compression for PNG and maximum quality for all other file formats. See writeImage(BufferedImage image, String formatName, OutputStream output, int dpi, float compressionQuality) for more details.
      Parameters:
      image - the image to be written
      formatName - the target format (ex. "png")
      output - the output stream to be used for writing
      Returns:
      true if the image file was produced, false if there was an error.
      Throws:
      IOException - if an I/O error occurs
    • writeImage

      public static boolean writeImage(BufferedImage image, String formatName, OutputStream output, int dpi) throws IOException
      Writes a buffered image to a file using the given image format. The compression is set for maximum compression for PNG and maximum quality for all other file formats. See writeImage(BufferedImage image, String formatName, OutputStream output, int dpi, float compressionQuality) for more details.
      Parameters:
      image - the image to be written
      formatName - the target format (ex. "png")
      output - the output stream to be used for writing
      dpi - the resolution in dpi (dots per inch) to be used in metadata
      Returns:
      true if the image file was produced, false if there was an error.
      Throws:
      IOException - if an I/O error occurs
    • writeImage

      public static boolean writeImage(BufferedImage image, String formatName, OutputStream output, int dpi, float compressionQuality) throws IOException
      Writes a buffered image to a file using the given image format. Compression is fixed for PNG, GIF, BMP and WBMP, dependent of the compressionQuality parameter for JPG, and dependent of bit count for TIFF (a bitonal image will be compressed with CCITT G4, a color image with LZW). Creating a TIFF image is only supported if the jai_imageio library (or equivalent) is in the class path.
      Parameters:
      image - the image to be written
      formatName - the target format (ex. "png")
      output - the output stream to be used for writing
      dpi - the resolution in dpi (dots per inch) to be used in metadata
      compressionQuality - quality to be used when compressing the image (0 < compressionQuality < 1.0f). See ImageWriteParam.setCompressionQuality(float) for more details.
      Returns:
      true if the image file was produced, false if there was an error.
      Throws:
      IOException - if an I/O error occurs
    • writeImage

      public static boolean writeImage(BufferedImage image, String formatName, OutputStream output, int dpi, float compressionQuality, String compressionType) throws IOException
      Writes a buffered image to a file using the given image format. Compression is fixed for PNG, GIF, BMP and WBMP, dependent of the compressionQuality parameter for JPG, and dependent of bit count for TIFF (a bitonal image will be compressed with CCITT G4, a color image with LZW). Creating a TIFF image is only supported if the jai_imageio library is in the class path.
      Parameters:
      image - the image to be written
      formatName - the target format (ex. "png")
      output - the output stream to be used for writing
      dpi - the resolution in dpi (dots per inch) to be used in metadata
      compressionQuality - quality to be used when compressing the image (0 < compressionQuality < 1.0f). See ImageWriteParam.setCompressionQuality(float) for more details.
      compressionType - Advanced users only, and only relevant for TIFF files: If null, save uncompressed; if empty string, use logic explained above; other valid values are found in the javadoc of TIFFImageWriteParam.
      Returns:
      true if the image file was produced, false if there was an error.
      Throws:
      IOException - if an I/O error occurs
    • hasICCProfile

      private static boolean hasICCProfile(BufferedImage image)
      Determine if the given image has a ICC profile that should be embedded.
      Parameters:
      image - the image to analyse
      Returns:
      true if this image has an ICC profile, that is different from sRGB.
    • getAsDeflatedBytes

      private static byte[] getAsDeflatedBytes(ICC_Profile profile) throws IOException
      Throws:
      IOException
    • getOrCreateChildNode

      private static IIOMetadataNode getOrCreateChildNode(IIOMetadataNode parentNode, String name)
      Gets the named child node, or creates and attaches it.
      Parameters:
      parentNode - the parent node
      name - name of the child node
      Returns:
      the existing or just created child node
    • setDPI

      private static void setDPI(IIOMetadata metadata, int dpi, String formatName) throws IIOInvalidTreeException
      Throws:
      IIOInvalidTreeException