Class AWTImageTools

java.lang.Object
ome.codecs.gui.AWTImageTools

public final class AWTImageTools extends Object
A utility class with convenience methods for manipulating images in BufferedImage form. To work with images in primitive array form, use the ome.codecs.ImageTools class. Much code was stolen and adapted from DrLaszloJamf's posts on the Java forums.
Author:
Curtis Rueden ctrueden at wisc.edu
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final Component
    ImageObserver for working with AWT images.
  • Method Summary

    Modifier and Type
    Method
    Description
    constructImage(int c, int type, int w, int h, boolean interleaved, boolean banded, DataBuffer buffer)
    Creates an image with the given DataBuffer.
    constructImage(int c, int type, int w, int h, boolean interleaved, boolean banded, DataBuffer buffer, ColorModel colorModel)
    Creates an image with the given DataBuffer.
    static byte[][]
    Extracts pixel data as arrays of unsigned bytes, one per channel.
    static byte[]
    getBytes(BufferedImage img, boolean separated)
    Get the bytes from an image, merging the channels as necessary.
    static byte[][]
    Extracts pixel data as arrays of unsigned bytes, one per channel.
    static byte[][]
    getBytes(WritableRaster r, int x, int y, int w, int h)
    Extracts pixel data as arrays of unsigned bytes, one per channel.
    static double[][]
    Extracts pixel data as arrays of doubles, one per channel.
    static double[][]
    Extracts pixel data as arrays of doubles, one per channel.
    static double[][]
    getDoubles(WritableRaster r, int x, int y, int w, int h)
    Extracts pixel data as arrays of doubles, one per channel.
    static float[][]
    Extracts pixel data as arrays of floats, one per channel.
    static float[][]
    Extracts pixel data as arrays of floats, one per channel.
    static float[][]
    getFloats(WritableRaster r, int x, int y, int w, int h)
    Extracts pixel data as arrays of floats, one per channel.
    static int[][]
    Extracts pixel data as arrays of signed integers, one per channel.
    static int[][]
    Extracts pixel data as arrays of signed integers, one per channel.
    static int[][]
    getInts(WritableRaster r, int x, int y, int w, int h)
    Extracts pixel data as arrays of signed integers, one per channel.
    static byte[][]
    getPixelBytes(BufferedImage img, boolean little)
    Return a 2D array of bytes representing the image.
    static byte[][]
    getPixelBytes(BufferedImage img, boolean little, int x, int y, int w, int h)
    Return a 2D array of bytes representing the image.
    static byte[][]
    getPixelBytes(WritableRaster r, boolean little)
    Return a 2D array of bytes representing the image.
    static byte[][]
    getPixelBytes(WritableRaster r, boolean little, int x, int y, int w, int h)
    Return a 2D array of bytes representing the image.
    static Object
    Gets the image's pixel data as arrays of primitives, one per channel.
    static Object
    getPixels(BufferedImage image, int x, int y, int w, int h)
    Gets the image's pixel data as arrays of primitives, one per channel.
    static Object
    Gets the raster's pixel data as arrays of primitives, one per channel.
    static Object
    getPixels(WritableRaster raster, int x, int y, int w, int h)
    Gets the raster's pixel data as arrays of primitives, one per channel.
    static short[][]
    Extracts pixel data as arrays of unsigned shorts, one per channel.
    static short[][]
    Extracts pixel data as arrays of unsigned shorts, one per channel.
    static short[][]
    getShorts(WritableRaster r, int x, int y, int w, int h)
    Extracts pixel data as arrays of unsigned shorts, one per channel.
    static ColorModel
    makeColorModel(int c, int dataType)
    Gets a color model for the given number of color components.
    static ColorSpace
    Gets a color space for the given number of color components.
    makeImage(byte[][] data, int w, int h, boolean signed)
    Creates an image from the given byte data.
    makeImage(byte[][] data, int w, int h, int bpp, boolean fp, boolean little, boolean signed)
    Creates an image from the given raw byte array, performing any necessary type conversions.
    makeImage(byte[] data, int w, int h, boolean signed)
    Creates an image from the given single-channel byte data.
    makeImage(byte[] data, int w, int h, int c, boolean interleaved, boolean signed)
    Creates an image from the given byte data.
    makeImage(byte[] data, int w, int h, int c, boolean interleaved, int bpp, boolean fp, boolean little, boolean signed)
    Creates an image from the given raw byte array, performing any necessary type conversions.
    makeImage(double[][] data, int w, int h)
    Creates an image from the given double-precision floating point data.
    makeImage(double[] data, int w, int h)
    Creates an image from the given single-channel double data.
    makeImage(double[] data, int w, int h, int c, boolean interleaved)
    Creates an image from the given double data.
    makeImage(float[][] data, int w, int h)
    Creates an image from the given single-precision floating point data.
    makeImage(float[] data, int w, int h)
    Creates an image from the given single-channel float data.
    makeImage(float[] data, int w, int h, int c, boolean interleaved)
    Creates an image from the given float data.
    makeImage(int[][] data, int w, int h, boolean signed)
    Creates an image from the given int data.
    makeImage(int[] data, int w, int h, boolean signed)
    Creates an image from the given single-channel int data.
    makeImage(int[] data, int w, int h, int c, boolean interleaved, boolean signed)
    Creates an image from the given int data.
    makeImage(short[][] data, int w, int h, boolean signed)
    Creates an image from the given short data.
    makeImage(short[] data, int w, int h, boolean signed)
    Creates an image from the given single-channel short data.
    makeImage(short[] data, int w, int h, int c, boolean interleaved, boolean signed)
    Creates an image from the given short data.
    makeRGBImage(byte[][] data, int w, int h)
     
    makeRGBImage(byte[] data, int c, int w, int h, boolean interleaved)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • OBS

      protected static final Component OBS
      ImageObserver for working with AWT images.
  • Method Details

    • makeImage

      public static BufferedImage makeImage(byte[] data, int w, int h, boolean signed)
      Creates an image from the given single-channel byte data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      signed - Whether the byte values should be treated as signed (-128 to 127) instead of unsigned (0 to 255).
    • makeImage

      public static BufferedImage makeImage(short[] data, int w, int h, boolean signed)
      Creates an image from the given single-channel short data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      signed - Whether the short values should be treated as signed (-32768 to 32767) instead of unsigned (0 to 65535).
    • makeImage

      public static BufferedImage makeImage(int[] data, int w, int h, boolean signed)
      Creates an image from the given single-channel int data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      signed - Whether the int values should be treated as signed (-2^31 to 2^31-1) instead of unsigned (0 to 2^32-1).
    • makeImage

      public static BufferedImage makeImage(float[] data, int w, int h)
      Creates an image from the given single-channel float data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
    • makeImage

      public static BufferedImage makeImage(double[] data, int w, int h)
      Creates an image from the given single-channel double data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
    • makeImage

      public static BufferedImage makeImage(byte[] data, int w, int h, int c, boolean interleaved, boolean signed)
      Creates an image from the given byte data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      c - Number of channels.
      interleaved - If set, the channels are assumed to be interleaved; otherwise they are assumed to be sequential. For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved, while "RRR...GGG...BBB..." is sequential.
      signed - Whether the byte values should be treated as signed (-128 to 127) instead of unsigned (0 to 255).
    • makeImage

      public static BufferedImage makeImage(short[] data, int w, int h, int c, boolean interleaved, boolean signed)
      Creates an image from the given short data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      c - Number of channels.
      interleaved - If set, the channels are assumed to be interleaved; otherwise they are assumed to be sequential. For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved, while "RRR...GGG...BBB..." is sequential.
      signed - Whether the short values should be treated as signed (-32768 to 32767) instead of unsigned (0 to 65535).
    • makeImage

      public static BufferedImage makeImage(int[] data, int w, int h, int c, boolean interleaved, boolean signed)
      Creates an image from the given int data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      c - Number of channels.
      interleaved - If set, the channels are assumed to be interleaved; otherwise they are assumed to be sequential. For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved, while "RRR...GGG...BBB..." is sequential.
      signed - Whether the int values should be treated as signed (-2^31 to 2^31-1) instead of unsigned (0 to 2^32-1).
    • makeImage

      public static BufferedImage makeImage(float[] data, int w, int h, int c, boolean interleaved)
      Creates an image from the given float data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      c - Number of channels.
      interleaved - If set, the channels are assumed to be interleaved; otherwise they are assumed to be sequential. For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved, while "RRR...GGG...BBB..." is sequential.
    • makeImage

      public static BufferedImage makeImage(double[] data, int w, int h, int c, boolean interleaved)
      Creates an image from the given double data.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      c - Number of channels.
      interleaved - If set, the channels are assumed to be interleaved; otherwise they are assumed to be sequential. For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved, while "RRR...GGG...BBB..." is sequential.
    • makeImage

      public static BufferedImage makeImage(byte[][] data, int w, int h, boolean signed)
      Creates an image from the given byte data.
      Parameters:
      data - Array containing image data. It is assumed that each channel corresponds to one element of the array. For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
      w - Width of image plane.
      h - Height of image plane.
      signed - Whether the byte values should be treated as signed (-128 to 127) instead of unsigned (0 to 255).
    • makeImage

      public static BufferedImage makeImage(short[][] data, int w, int h, boolean signed)
      Creates an image from the given short data.
      Parameters:
      data - Array containing image data. It is assumed that each channel corresponds to one element of the array. For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
      w - Width of image plane.
      h - Height of image plane.
      signed - Whether the short values should be treated as signed (-32768 to 32767) instead of unsigned (0 to 65535).
    • makeImage

      public static BufferedImage makeImage(int[][] data, int w, int h, boolean signed)
      Creates an image from the given int data.
      Parameters:
      data - Array containing image data. It is assumed that each channel corresponds to one element of the array. For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
      w - Width of image plane.
      h - Height of image plane.
      signed - Whether the int values should be treated as signed (-2^31 to 2^31-1) instead of unsigned (0 to 2^32-1).
    • makeImage

      public static BufferedImage makeImage(float[][] data, int w, int h)
      Creates an image from the given single-precision floating point data.
      Parameters:
      data - Array containing image data. It is assumed that each channel corresponds to one element of the array. For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
      w - Width of image plane.
      h - Height of image plane.
    • makeImage

      public static BufferedImage makeImage(double[][] data, int w, int h)
      Creates an image from the given double-precision floating point data.
      Parameters:
      data - Array containing image data. It is assumed that each channel corresponds to one element of the array. For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
      w - Width of image plane.
      h - Height of image plane.
    • makeImage

      public static BufferedImage makeImage(byte[] data, int w, int h, int c, boolean interleaved, int bpp, boolean fp, boolean little, boolean signed)
      Creates an image from the given raw byte array, performing any necessary type conversions.
      Parameters:
      data - Array containing image data.
      w - Width of image plane.
      h - Height of image plane.
      c - Number of channels.
      interleaved - If set, the channels are assumed to be interleaved; otherwise they are assumed to be sequential. For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved, while "RRR...GGG...BBB..." is sequential.
      bpp - Denotes the number of bytes in the returned primitive type (e.g. if bpp == 2, we should return an array of type short).
      fp - If set and bpp == 4 or bpp == 8, then return floats or doubles.
      little - Whether byte array is in little-endian order.
      signed - Whether the data values should be treated as signed instead of unsigned.
    • makeImage

      public static BufferedImage makeImage(byte[][] data, int w, int h, int bpp, boolean fp, boolean little, boolean signed)
      Creates an image from the given raw byte array, performing any necessary type conversions.
      Parameters:
      data - Array containing image data, one channel per element.
      w - Width of image plane.
      h - Height of image plane.
      bpp - Denotes the number of bytes in the returned primitive type (e.g. if bpp == 2, we should return an array of type short).
      fp - If set and bpp == 4 or bpp == 8, then return floats or doubles.
      little - Whether byte array is in little-endian order.
      signed - Whether the data values should be treated as signed instead of unsigned.
    • makeRGBImage

      public static BufferedImage makeRGBImage(byte[] data, int c, int w, int h, boolean interleaved)
    • makeRGBImage

      public static BufferedImage makeRGBImage(byte[][] data, int w, int h)
    • constructImage

      public static BufferedImage constructImage(int c, int type, int w, int h, boolean interleaved, boolean banded, DataBuffer buffer)
      Creates an image with the given DataBuffer.
    • constructImage

      public static BufferedImage constructImage(int c, int type, int w, int h, boolean interleaved, boolean banded, DataBuffer buffer, ColorModel colorModel)
      Creates an image with the given DataBuffer.
    • getPixels

      public static Object getPixels(BufferedImage image)
      Gets the image's pixel data as arrays of primitives, one per channel. The returned type will be either byte[][], short[][], int[][], float[][] or double[][], depending on the image's transfer type.
    • getPixels

      public static Object getPixels(BufferedImage image, int x, int y, int w, int h)
      Gets the image's pixel data as arrays of primitives, one per channel. The returned type will be either byte[][], short[][], int[][], float[][] or double[][], depending on the image's transfer type.
    • getPixels

      public static Object getPixels(WritableRaster raster)
      Gets the raster's pixel data as arrays of primitives, one per channel. The returned type will be either byte[][], short[][], int[][], float[][] or double[][], depending on the raster's transfer type.
    • getPixels

      public static Object getPixels(WritableRaster raster, int x, int y, int w, int h)
      Gets the raster's pixel data as arrays of primitives, one per channel. The returned type will be either byte[][], short[][], int[][], float[][] or double[][], depending on the raster's transfer type.
    • getBytes

      public static byte[][] getBytes(BufferedImage image)
      Extracts pixel data as arrays of unsigned bytes, one per channel.
    • getBytes

      public static byte[][] getBytes(WritableRaster r)
      Extracts pixel data as arrays of unsigned bytes, one per channel.
    • getBytes

      public static byte[][] getBytes(WritableRaster r, int x, int y, int w, int h)
      Extracts pixel data as arrays of unsigned bytes, one per channel.
    • getShorts

      public static short[][] getShorts(BufferedImage image)
      Extracts pixel data as arrays of unsigned shorts, one per channel.
    • getShorts

      public static short[][] getShorts(WritableRaster r)
      Extracts pixel data as arrays of unsigned shorts, one per channel.
    • getShorts

      public static short[][] getShorts(WritableRaster r, int x, int y, int w, int h)
      Extracts pixel data as arrays of unsigned shorts, one per channel.
    • getInts

      public static int[][] getInts(BufferedImage image)
      Extracts pixel data as arrays of signed integers, one per channel.
    • getInts

      public static int[][] getInts(WritableRaster r)
      Extracts pixel data as arrays of signed integers, one per channel.
    • getInts

      public static int[][] getInts(WritableRaster r, int x, int y, int w, int h)
      Extracts pixel data as arrays of signed integers, one per channel.
    • getFloats

      public static float[][] getFloats(BufferedImage image)
      Extracts pixel data as arrays of floats, one per channel.
    • getFloats

      public static float[][] getFloats(WritableRaster r)
      Extracts pixel data as arrays of floats, one per channel.
    • getFloats

      public static float[][] getFloats(WritableRaster r, int x, int y, int w, int h)
      Extracts pixel data as arrays of floats, one per channel.
    • getDoubles

      public static double[][] getDoubles(BufferedImage image)
      Extracts pixel data as arrays of doubles, one per channel.
    • getDoubles

      public static double[][] getDoubles(WritableRaster r)
      Extracts pixel data as arrays of doubles, one per channel.
    • getDoubles

      public static double[][] getDoubles(WritableRaster r, int x, int y, int w, int h)
      Extracts pixel data as arrays of doubles, one per channel.
    • getPixelBytes

      public static byte[][] getPixelBytes(BufferedImage img, boolean little)
      Return a 2D array of bytes representing the image. If the transfer type is something other than DataBuffer.TYPE_BYTE, then each pixel value is converted to the appropriate number of bytes. In other words, if we are given an image with 16-bit data, each channel of the resulting array will have width * height * 2 bytes.
    • getPixelBytes

      public static byte[][] getPixelBytes(WritableRaster r, boolean little)
      Return a 2D array of bytes representing the image. If the transfer type is something other than DataBuffer.TYPE_BYTE, then each pixel value is converted to the appropriate number of bytes. In other words, if we are given an image with 16-bit data, each channel of the resulting array will have width * height * 2 bytes.
    • getPixelBytes

      public static byte[][] getPixelBytes(BufferedImage img, boolean little, int x, int y, int w, int h)
      Return a 2D array of bytes representing the image. If the transfer type is something other than DataBuffer.TYPE_BYTE, then each pixel value is converted to the appropriate number of bytes. In other words, if we are given an image with 16-bit data, each channel of the resulting array will have width * height * 2 bytes.
    • getPixelBytes

      public static byte[][] getPixelBytes(WritableRaster r, boolean little, int x, int y, int w, int h)
      Return a 2D array of bytes representing the image. If the transfer type is something other than DataBuffer.TYPE_BYTE, then each pixel value is converted to the appropriate number of bytes. In other words, if we are given an image with 16-bit data, each channel of the resulting array will have width * height * 2 bytes.
    • getBytes

      public static byte[] getBytes(BufferedImage img, boolean separated)
      Get the bytes from an image, merging the channels as necessary.
    • makeColorSpace

      public static ColorSpace makeColorSpace(int c)
      Gets a color space for the given number of color components.
    • makeColorModel

      public static ColorModel makeColorModel(int c, int dataType)
      Gets a color model for the given number of color components.