code: def img_to_array(img, data_format=None, dtype=None):
      """Converts a PIL Image instance to a NumPy array.
  
      Usage:
  
      ```python
      from PIL import Image
      img_data = np.random.random(size=(100, 100, 3))
      img = keras.utils.array_to_img(img_data)
      array = keras.utils.image.img_to_array(img)
      ```
  
      Args:
          img: Input PIL Image instance.
          data_format: Image data format, can be either `"channels_first"` or
              `"channels_last"`. Defaults to `None`, in which case the global
              setting `keras.backend.image_data_format()` is used (unless you
              changed it, it defaults to `"channels_last"`).
          dtype: Dtype to use. `None` means the global setting
              `keras.backend.floatx()` is used (unless you changed it, it
              defaults to `"float32"`).
  
      Returns:
          A 3D NumPy array.
      """
  
      data_format = backend.standardize_data_format(data_format)
      if dtype is None:
          dtype = backend.floatx()
      # NumPy array x has format (height, width, channel)
      # or (channel, height, width)
      # but original PIL image has format (width, height, channel)
      x = np.asarray(img, dtype=dtype)
      if len(x.shape) == 3:
          if data_format == "channels_first":
              x = x.transpose(2, 0, 1)
      elif len(x.shape) == 2:
          if data_format == "channels_first":
              x = x.reshape((1, x.shape[0], x.shape[1]))
          else:
              x = x.reshape((x.shape[0], x.shape[1], 1))
      else:
          raise ValueError(f"Unsupported image shape: {x.shape}")
      return x
  
file_path: keras/keras/utils/image_utils.py
imports: import io
  import pathlib
  import warnings
  import numpy
  from keras import backend
  from keras.api_export import keras_export
label_desc: Use image node_id 2 for calling a global function with example usage: img_to_array(img, data_format, dtype) and returns: x