code: def test_png_dtypes(setup_library, tmp_path):
      fnamebase = str(tmp_path / "test")
  
      # See issue #44
  
      # Two images, one 0-255, one 0-200
      im1 = np.zeros((100, 100, 3), dtype="uint8")
      im2 = np.zeros((100, 100, 3), dtype="uint8")
      im1[20:80, 20:80, :] = 255
      im2[20:80, 20:80, :] = 200
  
      fname = fnamebase + ".dtype.png"
  
      # uint8
      iio.imsave(fname, im1)
      assert_close(im1, iio.imread(fname))
      iio.imsave(fname, im2)
      assert_close(im2, iio.imread(fname))
  
      # float scaled
      iio.imsave(fname, im1 / 255.0)
      assert_close(im1, iio.imread(fname))
      iio.imsave(fname, im2 / 255.0)
      assert_close(im2, iio.imread(fname))
  
      # float not scaled
      iio.imsave(fname, im1 * 1.0)
      assert_close(im1, iio.imread(fname))
      iio.imsave(fname, im2 * 1.0)
      assert_close(im1, iio.imread(fname))  # scaled
  
      # int16
      iio.imsave(fname, im1.astype("int16"))
      assert_close(im1, iio.imread(fname))
      iio.imsave(fname, im2.astype("int16"))
      assert_close(im1, iio.imread(fname))
  
imports: import os
  import shutil
  import sys
  import platform
  import warnings
  import fsspec
  import imageio.plugins
  import imageio.v3
  import imageio.v2
  import numpy
  import pytest
  from imageio import core
  from imageio.core import IS_PYPY
  from pytest import raises
  from conftest import deprecated_test
label_desc: Use image node_id 11 for calling a global function with example usage: test_png_dtypes(setup_library, tmp_path) without return types