code: def read_png(filename):
      """Read a PNG file to RGB8 or RGBA8
      Requires Pillow.
  
      Parameters
      ----------
      filename : str
          File to read.
  
      Returns
      -------
      data : array
          Image data.
  
      See also
      --------
      write_png, imread, imsave
      """
      try:
          from PIL import Image
  
          x = Image.open(filename)
          try:
              y = np.asarray(x)
              y = np.array([yy for yy in y], np.uint8)
          finally:
              x.close()
          return y
      except ImportError:
          raise RuntimeError("read_png requires the Pillow package.")
  
file_path: vispy/vispy/io/image.py
imports: import struct
  import zlib
  import numpy
label_desc: Use image node_id 2 for calling a global function with example usage: read_png(filename) and returns: y