public class **TensorImage** TensorImage is the wrapper class for Image object. When using image processing utils in
TFLite.support library, it's common to convert image objects in variant types to TensorImage at
first.

At present, only RGB images are supported, and the A channel is always ignored.

Details of data storage: a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` object may have 2 potential sources of truth: a
`https://developer.android.com/reference/android/graphics/Bitmap.html` or a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer`. `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` maintains the
state and only converts one to the other when needed. A typical use case of `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`
is to first load a `https://developer.android.com/reference/android/graphics/Bitmap.html` image, then process it using `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProcessor`, and finally get the underlying `https://developer.android.com/reference/java/nio/ByteBuffer.html` of the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer`
and feed it into the TFLite interpreter.

IMPORTANT: to achieve the best performance, `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` avoids copying data whenever
it's possible. Therefore, it doesn't own its data. Callers should not modify data objects those
are passed to `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(Bitmap)` or `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(org.tensorflow.lite.support.tensorbuffer.TensorBuffer,%20org.tensorflow.lite.support.image.ColorSpaceType)`.

IMPORTANT: all methods are not proved thread-safe.

##### See Also

- `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProcessor`

<br />

<br />

<br />

<br />

### Public Constructors

|---|---|
|   | [TensorImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#TensorImage())() Initializes a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` object. |
|   | [TensorImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#TensorImage(org.tensorflow.lite.DataType))([DataType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType) dataType) Initializes a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` object with the specified data type. |

### Public Methods

|---|---|
| static [TensorImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage) | [createFrom](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#createFrom(org.tensorflow.lite.support.image.TensorImage,%20org.tensorflow.lite.DataType))([TensorImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage) src, [DataType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType) dataType) Creates a deep-copy of a given `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` with the desired data type. |
| static [TensorImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage) | [fromBitmap](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#fromBitmap(Bitmap))(Bitmap bitmap) Initializes a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` object of `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#UINT8` with a `https://developer.android.com/reference/android/graphics/Bitmap.html` . |
| Bitmap | [getBitmap](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBitmap())() Returns a `https://developer.android.com/reference/android/graphics/Bitmap.html` representation of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`. |
| [ByteBuffer](https://developer.android.com/reference/java/nio/ByteBuffer.html) | [getBuffer](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBuffer())() Returns a `https://developer.android.com/reference/java/nio/ByteBuffer.html` representation of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` with the expected data type. |
| [ColorSpaceType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType) | [getColorSpaceType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getColorSpaceType())() Gets the color space type of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`. |
| [DataType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType) | [getDataType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getDataType())() Gets the data type of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`. |
| int | [getHeight](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getHeight())() Gets the image height. |
| Image | [getMediaImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getMediaImage())() Returns an `https://developer.android.com/reference/android/media/Image.html` representation of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`. |
| [TensorBuffer](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer) | [getTensorBuffer](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getTensorBuffer())() Returns a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` representation of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` with the expected data type. |
| int | [getWidth](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getWidth())() Gets the image width. |
| void | [load](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(org.tensorflow.lite.support.tensorbuffer.TensorBuffer,%20org.tensorflow.lite.support.image.ColorSpaceType))([TensorBuffer](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer) buffer, [ColorSpaceType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType) colorSpaceType) Loads a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` containing pixel values with the specific `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType`. |
| void | [load](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(Bitmap))(Bitmap bitmap) Loads a `https://developer.android.com/reference/android/graphics/Bitmap.html` image object into this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`. |
| void | [load](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(int[],%20int[]))(int\[\] pixels, int\[\] shape) Loads an int array as RGB pixels into this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`, representing the pixels inside. |
| void | [load](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(float[],%20int[]))(float\[\] pixels, int\[\] shape) Loads a float array as RGB pixels into this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`, representing the pixels inside. |
| void | [load](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(java.nio.ByteBuffer,%20org.tensorflow.lite.support.image.ImageProperties))([ByteBuffer](https://developer.android.com/reference/java/nio/ByteBuffer.html) buffer, [ImageProperties](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties) imageProperties) Loads a `https://developer.android.com/reference/java/nio/ByteBuffer.html` containing pixel values with the specific `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties`. |
| void | [load](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(org.tensorflow.lite.support.tensorbuffer.TensorBuffer,%20org.tensorflow.lite.support.image.ImageProperties))([TensorBuffer](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer) buffer, [ImageProperties](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties) imageProperties) Loads a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` containing pixel values with the specific `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties`. |
| void | [load](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(Image))(Image image) Loads an `https://developer.android.com/reference/android/media/Image.html` object into this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`. |

### Inherited Methods

From class java.lang.Object

|---|---|
| boolean | equals([Object](https://developer.android.com/reference/java/lang/Object.html) arg0) |
| final [Class](https://developer.android.com/reference/java/lang/Class.html)\<?\> | getClass() |
| int | hashCode() |
| final void | notify() |
| final void | notifyAll() |
| [String](https://developer.android.com/reference/java/lang/String.html) | toString() |
| final void | wait(long arg0, int arg1) |
| final void | wait(long arg0) |
| final void | wait() |

## Public Constructors

#### public
**TensorImage**
()

Initializes a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` object.

Note: the data type of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` is `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#UINT8`. Use `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#TensorImage(org.tensorflow.lite.DataType)` if other data types are preferred.

<br />

#### public
**TensorImage**
([DataType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType) dataType)

Initializes a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` object with the specified data type.

When getting a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` or a `https://developer.android.com/reference/java/nio/ByteBuffer.html` from this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`,
such as using `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getTensorBuffer()` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBuffer()`, the data values will be
converted to the specified data type.

Note: the shape of a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` is not fixed. It can be adjusted to the shape of
the image being loaded to this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

<br />

<br />

##### Parameters

| dataType | the expected data type of the resulting `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer`. The type is always fixed during the lifetime of the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`. To convert the data type, use `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#createFrom(org.tensorflow.lite.support.image.TensorImage,%20org.tensorflow.lite.DataType)` to create a copy and convert data type at the same time. |
|---|---|

##### Throws

| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if `dataType` is neither `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#UINT8` nor `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#FLOAT32` |
|---|---|

## Public Methods

#### public static [TensorImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage)
**createFrom**
([TensorImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage) src, [DataType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType) dataType)

Creates a deep-copy of a given `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` with the desired data type.

##### Parameters

| src | the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` to copy from |
| dataType | the expected data type of newly created `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` |
|---|---|

##### Returns

- a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` whose data is copied from `src` and data type is `dataType`

#### public static [TensorImage](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage)
**fromBitmap**
(Bitmap bitmap)

Initializes a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` object of `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#UINT8` with a `https://developer.android.com/reference/android/graphics/Bitmap.html` .

##### Parameters

| bitmap |   |
|---|---|

##### See Also

- `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(Bitmap)`

#### public Bitmap
**getBitmap**
()

Returns a `https://developer.android.com/reference/android/graphics/Bitmap.html` representation of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

Numeric casting and clamping will be applied if the stored data is not uint8.

Note that, the reliable way to get pixels from an `ALPHA_8` Bitmap is to use `copyPixelsToBuffer`. Bitmap methods such as, \`setPixels()\` and \`getPixels\` do not work.

Important: it's only a reference. DO NOT MODIFY. We don't create a copy here for performance
concern, but if modification is necessary, please make a copy.

<br />

<br />

<br />

##### Returns

- a reference to a `https://developer.android.com/reference/android/graphics/Bitmap.html` in `ARGB_8888` config ("A" channel is always opaque) or in `ALPHA_8`, depending on the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType` of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer`.

##### Throws

| [IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException.html) | if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` never loads data |
|---|---|

#### public [ByteBuffer](https://developer.android.com/reference/java/nio/ByteBuffer.html)
**getBuffer**
()

Returns a `https://developer.android.com/reference/java/nio/ByteBuffer.html` representation of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` with the expected data
type.

Numeric casting and clamping will be applied if the stored data is different from the data
type of the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

Important: it's only a reference. DO NOT MODIFY. We don't create a copy here for performance
concern, but if modification is necessary, please make a copy.

It's essentially a short cut for `getTensorBuffer().getBuffer()`.

<br />

<br />

<br />

##### Returns

- a reference to a `https://developer.android.com/reference/java/nio/ByteBuffer.html` which holds the image data

##### Throws

| [IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException.html) | if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` never loads data |
|---|---|

#### public [ColorSpaceType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType)
**getColorSpaceType**
()

Gets the color space type of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

##### Throws

| [IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException.html) | if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` never loads data |
|---|---|

#### public [DataType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType)
**getDataType**
()

Gets the data type of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

##### Returns

- a data type. Currently only `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#UINT8` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#FLOAT32` are supported.

#### public int
**getHeight**
()

Gets the image height.

##### Throws

| [IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException.html) | if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` never loads data |
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if the underlying data is corrupted |
|---|---|

#### public Image
**getMediaImage**
()

Returns an `https://developer.android.com/reference/android/media/Image.html` representation of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

This method only works when the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` is backed by an `https://developer.android.com/reference/android/media/Image.html`, meaning you need to first load an `https://developer.android.com/reference/android/media/Image.html` through
`https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(Image)`.

Important: it's only a reference. DO NOT MODIFY. We don't create a copy here for performance
concern, but if modification is necessary, please make a copy.

<br />

<br />

##### Returns

- a reference to a `https://developer.android.com/reference/android/graphics/Bitmap.html` in `ARGB_8888` config ("A" channel is always opaque) or in `ALPHA_8`, depending on the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType` of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer`.

##### Throws

| [IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException.html) | if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` never loads data |
|---|---|

#### public [TensorBuffer](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer)
**getTensorBuffer**
()

Returns a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` representation of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` with the expected
data type.

Numeric casting and clamping will be applied if the stored data is different from the data
type of the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

Important: it's only a reference. DO NOT MODIFY. We don't create a copy here for performance
concern, but if modification is necessary, please make a copy.

<br />

<br />

##### Returns

- a reference to a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` which holds the image data

##### Throws

| [IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException.html) | if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` never loads data |
|---|---|

#### public int
**getWidth**
()

Gets the image width.

##### Throws

| [IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException.html) | if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` never loads data |
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if the underlying data is corrupted |
|---|---|

#### public void
**load**
([TensorBuffer](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer) buffer, [ColorSpaceType](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType) colorSpaceType)

Loads a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` containing pixel values with the specific `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType`.

Only supports `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType#RGB` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ColorSpaceType#GRAYSCALE`. Use `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#load(org.tensorflow.lite.support.tensorbuffer.TensorBuffer,%20org.tensorflow.lite.support.image.ImageProperties)` for other color space types.

Note: if the data type of `buffer` does not match that of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`,
numeric casting and clamping will be applied when calling `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getTensorBuffer()` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBuffer()`.

<br />

<br />

##### Parameters

| buffer | the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` to be loaded. Its shape should be either (h, w, 3) or (1, h, w, 3) for RGB images, and either (h, w) or (1, h, w) for GRAYSCALE images |
| colorSpaceType |   |
|---|---|

##### Throws

| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if the shape of buffer does not match the color space type, or if the color space type is not supported |
|---|---|

#### public void
**load**
(Bitmap bitmap)

Loads a `https://developer.android.com/reference/android/graphics/Bitmap.html` image object into this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

Note: if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` has data type other than `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#UINT8`, numeric
casting and clamping will be applied when calling `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getTensorBuffer()` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBuffer()`, where the `https://developer.android.com/reference/android/graphics/Bitmap.html` will be converted into a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer`.

Important: when loading a bitmap, DO NOT MODIFY the bitmap from the caller side anymore. The
`https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` object will rely on the bitmap. It will probably modify the bitmap as well.
In this method, we perform a zero-copy approach for that bitmap, by simply holding its
reference. Use `bitmap.copy(bitmap.getConfig(), true)` to create a copy if necessary.

Note: to get the best performance, please load images in the same shape to avoid memory
re-allocation.

<br />

<br />

<br />

##### Parameters

| bitmap |   |
|---|---|

##### Throws

| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if `bitmap` is not in ARGB_8888 |
|---|---|

#### public void
**load**
(int\[\] pixels, int\[\] shape)

Loads an int array as RGB pixels into this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`, representing the pixels inside.

Note: numeric casting and clamping will be applied to convert the values into the data type
of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` when calling `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getTensorBuffer()` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBuffer()`.

<br />

##### Parameters

| pixels | the RGB pixels representing the image |
| shape | the shape of the image, should either in form (h, w, 3), or in form (1, h, w, 3) |
|---|---|

##### Throws

| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if the shape is neither (h, w, 3) nor (1, h, w, 3) |
|---|---|

#### public void
**load**
(float\[\] pixels, int\[\] shape)

Loads a float array as RGB pixels into this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`, representing the pixels
inside.

Note: if the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` has a data type other than `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/DataType#FLOAT32`,
numeric casting and clamping will be applied when calling `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getTensorBuffer()` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBuffer()`.

<br />

##### Parameters

| pixels | the RGB pixels representing the image |
| shape | the shape of the image, should either in form (h, w, 3), or in form (1, h, w, 3) |
|---|---|

##### Throws

| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if the shape is neither (h, w, 3) nor (1, h, w, 3) |
|---|---|

#### public void
**load**
([ByteBuffer](https://developer.android.com/reference/java/nio/ByteBuffer.html) buffer, [ImageProperties](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties) imageProperties)

Loads a `https://developer.android.com/reference/java/nio/ByteBuffer.html` containing pixel values with the specific `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties`.

Note: if the data type of `buffer` does not match that of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`,
numeric casting and clamping will be applied when calling `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getTensorBuffer()` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBuffer()`.

<br />

##### Parameters

| buffer |   |
| imageProperties |   |
|---|---|

##### Throws

| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if buffer size is less than the image size indicated by image height, width, and color space type in `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties` |
|---|---|

#### public void
**load**
([TensorBuffer](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer) buffer, [ImageProperties](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties) imageProperties)

Loads a `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` containing pixel values with the specific `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties`.

The shape of the `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/tensorbuffer/TensorBuffer` will not be used to determine image height and width.
Set image properties through `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties`.

Note: if the data type of `buffer` does not match that of this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`,
numeric casting and clamping will be applied when calling `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getTensorBuffer()` and `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage#getBuffer()`.

<br />

<br />

##### Parameters

| buffer |   |
| imageProperties |   |
|---|---|

##### Throws

| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException.html) | if buffer size is less than the image size indicated by image height, width, and color space type in `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProperties` |
|---|---|

#### public void
**load**
(Image image)

Loads an `https://developer.android.com/reference/android/media/Image.html` object into this `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage`.

The main usage of this method is to load an `https://developer.android.com/reference/android/media/Image.html` object as model
input to the [https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview](https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TFLite Task Library).
`https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/TensorImage` backed by `https://developer.android.com/reference/android/media/Image.html` is not supported by `https://developers.google.com/edge/api/tflite/java/org/tensorflow/lite/support/image/ImageProcessor`.

\* @throws IllegalArgumentException if the `https://developer.android.com/reference/android/graphics/ImageFormat.html` of `image` is not YUV_420_888

<br />

<br />

##### Parameters

| image |   |
|---|---|