code: def op(
      name,
      images,
      max_outputs=3,
      display_name=None,
      description=None,
      collections=None,
  ):
      """Create a legacy image summary op for use in a TensorFlow graph.
  
      Arguments:
        name: A unique name for the generated summary node.
        images: A `Tensor` representing pixel data with shape `[k, h, w, c]`,
          where `k` is the number of images, `h` and `w` are the height and
          width of the images, and `c` is the number of channels, which
          should be 1, 3, or 4. Any of the dimensions may be statically
          unknown (i.e., `None`).
        max_outputs: Optional `int` or rank-0 integer `Tensor`. At most this
          many images will be emitted at each step. When more than
          `max_outputs` many images are provided, the first `max_outputs` many
          images will be used and the rest silently discarded.
        display_name: Optional name for this summary in TensorBoard, as a
          constant `str`. Defaults to `name`.
        description: Optional long-form description for this summary, as a
          constant `str`. Markdown is supported. Defaults to empty.
        collections: Optional list of graph collections keys. The new
          summary op is added to these collections. Defaults to
          `[Graph Keys.SUMMARIES]`.
  
      Returns:
        A TensorFlow summary op.
      """
      # TODO(nickfelt): remove on-demand imports once dep situation is fixed.
      import tensorflow.compat.v1 as tf
  
      if display_name is None:
          display_name = name
      summary_metadata = metadata.create_summary_metadata(
          display_name=display_name, description=description
      )
      with tf.name_scope(name), tf.control_dependencies(
          [
              tf.assert_rank(images, 4),
              tf.assert_type(images, tf.uint8),
              tf.assert_non_negative(max_outputs),
          ]
      ):
          limited_images = images[:max_outputs]
          encoded_images = tf.map_fn(
              tf.image.encode_png,
              limited_images,
              dtype=tf.string,
              name="encode_each_image",
          )
          image_shape = tf.shape(input=images)
          dimensions = tf.stack(
              [
                  tf.as_string(image_shape[2], name="width"),
                  tf.as_string(image_shape[1], name="height"),
              ],
              name="dimensions",
          )
          tensor = tf.concat([dimensions, encoded_images], axis=0)
          return tf.summary.tensor_summary(
              name="image_summary",
              tensor=tensor,
              collections=collections,
              summary_metadata=summary_metadata,
          )
  
imports: import numpy
  from tensorboard.plugins.image import metadata
  from tensorboard.plugins.image import summary_v2
  from tensorboard.util import encoder
label_desc: Use image node_id 1 for calling a global function with example usage: op(name, images, max_outputs, display_name, description, collections) and returns: tf