code: def test_save_pil_to_file_keeps_pnginfo(self, gradio_temp_dir):
      input_img = Image.open("gradio/test_data/test_image.png")
      input_img = input_img.convert("RGB")
      input_img.info = {"key1": "value1", "key2": "value2"}
      input_img.save(gradio_temp_dir / "test_test_image.png")
  
      file_obj = processing_utils.save_pil_to_cache(
          input_img, cache_dir=gradio_temp_dir
      )
      output_img = Image.open(file_obj)
  
      assert output_img.info == input_img.info
  
imports: import os
  import shutil
  import tempfile
  from copy import deepcopy
  from pathlib import Path
  from unittest.mock import patch
  import ffmpy
  import numpy
  import pytest
  from gradio_client import media_data
  from PIL import Image, ImageCms
  from gradio import processing_utils, utils
label_desc: Use image node_id 4 for calling the TestImagePreprocessing obj's underlying member method code with example usage: obj.test_save_pil_to_file_keeps_pnginfo(gradio_temp_dir) without return types