Module javafx.graphics
Package javafx.scene.image

# Interface PixelReader

public interface PixelReader
This interface defines methods for retrieving the pixel data from an `Image` or other surface containing pixels.

Since:
  JavaFX 2.2

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getArgb(int x, int y)`
  Reads a 32-bit integer representation of the color of a pixel from the specified coordinates in the surface.
  `Color`
  `getColor(int x, int y)`
  Reads the color of a pixel from the specified coordinates in the surface and returns the value as a `Color` object.
  `PixelFormat`
  `getPixelFormat()`
  This method returns the `PixelFormat` in which the surface stores its pixels, or a roughly equivalent pixel format into which it can easily convert its pixels for purposes of reading them.
  `void`
  `getPixels(int x, int y, int w, int h, WritablePixelFormat<ByteBuffer> pixelformat, byte[] buffer, int offset, int scanlineStride)`
  Reads pixel data from a rectangular region of the surface into the specified byte array.
  `void`
  `getPixels(int x, int y, int w, int h, WritablePixelFormat<IntBuffer> pixelformat, int[] buffer, int offset, int scanlineStride)`
  Reads pixel data from a rectangular region of the surface into the specified int array.
  `<T extends Buffer>
  void`
  `getPixels(int x, int y, int w, int h, WritablePixelFormat<T> pixelformat, T buffer, int scanlineStride)`
  Reads pixel data from a rectangular region of the surface into the specified buffer.

- ## Method Details

  - ### getPixelFormat

    PixelFormat getPixelFormat()
    This method returns the `PixelFormat` in which the surface stores its pixels, or a roughly equivalent pixel format into which it can easily convert its pixels for purposes of reading them.
    Returns:
      the `PixelFormat` that best describes the underlying pixels

  - ### getArgb

    int getArgb(int x, int y)
    Reads a 32-bit integer representation of the color of a pixel from the specified coordinates in the surface. The 32-bit integer will contain the 4 color components in separate 8-bit fields in ARGB order from the most significant byte to the least significant byte.
    Parameters:
      `x` - the X coordinate of the pixel color to read
      `y` - the Y coordinate of the pixel color to read
    Returns:
      a 32-bit representation of the color in the format described by the `INT_ARGB` PixelFormat type.

  - ### getColor

    Color getColor(int x, int y)
    Reads the color of a pixel from the specified coordinates in the surface and returns the value as a `Color` object.
    Parameters:
      `x` - the X coordinate of the pixel color to read
      `y` - the Y coordinate of the pixel color to read
    Returns:
      the Color object representing the color of the indicated pixel

  - ### getPixels

    <T extends Buffer> void getPixels(int x, int y, int w, int h, WritablePixelFormat<T> pixelformat, T buffer, int scanlineStride)
    Reads pixel data from a rectangular region of the surface into the specified buffer. The format to be used for pixels in the buffer is defined by the `PixelFormat` object and pixel format conversions will be performed as needed to store the data in the indicated format. The buffer is assumed to be positioned to the location where the first pixel data from the image pixel at location `(x, y)` will be stored. Pixel data for a row will be stored in adjacent locations within the buffer packed as tightly as possible for increasing X coordinates. Pixel data for adjacent rows will be stored offset from each other by the number of buffer data elements defined by `scanlineStride`.
    Type Parameters:
      `T` - the type of the buffer
    Parameters:
      `x` - the X coordinate of the rectangular region to read
      `y` - the Y coordinate of the rectangular region to read
      `w` - the width of the rectangular region to read
      `h` - the height of the rectangular region to read
      `pixelformat` - the `PixelFormat` object defining the format to store the pixels into buffer
      `buffer` - a buffer of a type appropriate for the indicated `PixelFormat` object
      `scanlineStride` - the distance between the pixel data for the start of one row of data in the buffer to the start of the next row of data.

  - ### getPixels

    void getPixels(int x, int y, int w, int h, WritablePixelFormat<ByteBuffer> pixelformat, byte[] buffer, int offset, int scanlineStride)
    Reads pixel data from a rectangular region of the surface into the specified byte array. The format to be used for pixels in the buffer is defined by the `PixelFormat` object and pixel format conversions will be performed as needed to store the data in the indicated format. The `pixelformat` must be a compatible `PixelFormat<ByteBuffer>` type. The data for the first pixel at location `(x, y)` will be read into the array index specified by the `offset` parameter. Pixel data for a row will be stored in adjacent locations within the array packed as tightly as possible for increasing X coordinates. Pixel data for adjacent rows will be stored offset from each other by the number of byte array elements defined by `scanlineStride`.
    Parameters:
      `x` - the X coordinate of the rectangular region to read
      `y` - the Y coordinate of the rectangular region to read
      `w` - the width of the rectangular region to read
      `h` - the height of the rectangular region to read
      `pixelformat` - the `PixelFormat<ByteBuffer>` object defining the byte format to store the pixels into buffer
      `buffer` - a byte array to store the returned pixel data
      `offset` - the offset into `buffer` to store the first pixel data
      `scanlineStride` - the distance between the pixel data for the start of one row of data in the buffer to the start of the next row of data

  - ### getPixels

    void getPixels(int x, int y, int w, int h, WritablePixelFormat<IntBuffer> pixelformat, int[] buffer, int offset, int scanlineStride)
    Reads pixel data from a rectangular region of the surface into the specified int array. The format to be used for pixels in the buffer is defined by the `PixelFormat` object and pixel format conversions will be performed as needed to store the data in the indicated format. The `pixelformat` must be a compatible `PixelFormat<IntBuffer>` type. The data for the first pixel at location `(x, y)` will be read into the array index specified by the `offset` parameter. Pixel data for a row will be stored in adjacent locations within the array packed as tightly as possible for increasing X coordinates. Pixel data for adjacent rows will be stored offset from each other by the number of int array elements defined by `scanlineStride`.
    Parameters:
      `x` - the X coordinate of the rectangular region to read
      `y` - the Y coordinate of the rectangular region to read
      `w` - the width of the rectangular region to read
      `h` - the height of the rectangular region to read
      `pixelformat` - the `PixelFormat<IntBuffer>` object defining the int format to store the pixels into buffer
      `buffer` - a int array to store the returned pixel data
      `offset` - the offset into `buffer` to store the first pixel data
      `scanlineStride` - the distance between the pixel data for the start of one row of data in the buffer to the start of the next row of data