code: def get_image_info(f):
      """Retrieves the dimensions and number of channels of the given image from
      a file-like object that is streaming its contents.
  
      Args:
          f: a file-like object that supports ``read()``, ``seek()``, ``tell()``
  
      Returns:
          ``(width, height, num_channels)``
      """
      img = Image.open(f)
  
      # Flip the dimensions if image metadata requires us to. PIL.Image doesn't
      #   handle by default.
      if _image_has_flipped_dimensions(img):
          width, height = img.height, img.width
      else:
          width, height = img.width, img.height
  
      return width, height, len(img.getbands())
  
imports: import itertools
  import logging
  import multiprocessing.dummy
  import os
  import requests
  from PIL import Image
  import eta.core.utils
  import eta.core.video
  import fiftyone
  from fiftyone.core.odm import DynamicEmbeddedDocument
  import fiftyone.core.fields
  import fiftyone.core.media
  import fiftyone.core.utils
label_desc: Use image node_id 4 for calling a global function with example usage: get_image_info(f) and returns: width,  height,  len