code: def save_array(save_path, save_content, form, image_infor):
      """
      save_path: Example: save_dir/iter,
      save_content: dict of saveing content, where key is the name and value is the content.
                   Example: {'pred': pred.numpy(), 'label': label.numpy(), 'img': im.numpy()}
      form: Iterable that containing the format want to save.('npy', 'nii.gz')
      image_infor: Dict containing the information needed to save the image.
                  Example: {spacing: xx, direction: xx, origin: xx, format: 'zyx'}
      """
      if not isinstance(save_content, dict):
          raise TypeError(
              "The save_content need to be dict which the key is the save name and the value is the numpy array to be saved, but received {}".format(
                  type(save_content)
              )
          )
  
      for key, val in save_content.items():
          if not isinstance(val, np.ndarray):
              raise TypeError(
                  "We only save numpy array, but received {}".format(
                      type(val)
                  )
              )
          if len(val.shape) > 3:
              save_content[key] = np.squeeze(val)
  
      if not isinstance(form, Iterable):
          raise TypeError(
              "The form need be iterable, but received {}".format(
                  type(form)
              )
          )
  
      if save_path is not None:
          for suffix in form:
              if suffix == "npy":
                  for key, val in save_content.items():
                      np.save("{}_{}.npy".format(save_path, key), val)
              elif suffix == "nii" or suffix == "nii.gz":
                  for key, val in save_content.items():
                      if image_infor["format"] == "xyz":
                          val = np.transpose(val, [2, 1, 0])
                      elif image_infor["format"] != "zyx":
                          raise RuntimeError(
                              "the image format {} is not supported".format(
                                  image_infor["format"]
                              )
                          )
  
                      img_itk_new = sitk.GetImageFromArray(val)
                      img_itk_new.SetSpacing(
                          tuple(image_infor["spacing"])
                      )
                      img_itk_new.SetOrigin(
                          tuple(image_infor["origin"])
                      )
                      img_itk_new.SetDirection(
                          tuple(image_infor["direction"])
                      )
                      sitk.WriteImage(
                          img_itk_new,
                          os.path.join(
                              "{}_{}.{}".format(save_path, key, suffix)
                          ),
                      )
              else:
                  raise RuntimeError(
                      "Save format other than npy or nii/nii.gz is not supported yet."
                  )
  
          print("[EVAL] Sucessfully save to {}".format(save_path))
  
imports: import os
  import json
  import random
  import tempfile
  import filelock
  import contextlib
  import numpy
  import SimpleITK
  from collections.abc import Iterable
  from urllib.parse import urlparse, unquote
  from functools import partial, update_wrapper
  import paddle
  from medicalseg.utils import logger, seg_env
  from medicalseg.utils.download import download_file_and_uncompress
label_desc: Use image node_id 8 for calling a global function with example usage: save_array(save_path, save_content, form, image_infor) without return types