diff --git a/test/util/test_imageio.py b/test/util/test_imageio.py new file mode 100644 index 00000000..88b1f4b4 --- /dev/null +++ b/test/util/test_imageio.py @@ -0,0 +1,27 @@ +import os +import tempfile +import unittest + +import numpy as np +import tifffile + + +class TestImageRead(unittest.TestCase): + def test_read_memap(self): + from torch_em.util.image import load_image, supports_memmap + + with tempfile.TemporaryDirectory() as td: + tifffile.imwrite(os.path.join(td, "test.tif"), np.zeros((10, 10, 2))) + self.assert_(supports_memmap(os.path.join(td, "test.tif"))) + data = load_image(os.path.join(td, "test.tif")) + self.assertEqual(data.shape, (10, 10, 2)) + + def test_read_copressed(self): + from torch_em.util.image import load_image + + with tempfile.TemporaryDirectory() as td: + tifffile.imwrite(os.path.join(td, "test.tif"), np.zeros((10, 10, 2)), compression="ADOBE_DEFLATE") + data = load_image(os.path.join(td, "test.tif")) + self.assertEqual(data.shape, (10, 10, 2)) + + diff --git a/torch_em/util/image.py b/torch_em/util/image.py index 57e10769..e4ff8d7d 100644 --- a/torch_em/util/image.py +++ b/torch_em/util/image.py @@ -1,7 +1,7 @@ # TODO this should be partially refactored into elf.io before the next elf release # and then be used in image_stack_wrapper as welll import os -import imageio +import imageio.v2 as imageio try: import tifffile @@ -27,6 +27,8 @@ def supports_memmap(image_path): def load_image(image_path): if supports_memmap(image_path): return tifffile.memmap(image_path, mode='r') + elif tifffile is not None and os.path.splitext(image_path)[1].lower() in {".tiff", ".tif"}: + return tifffile.imread(image_path) else: # TODO handle multi-channel images return imageio.imread(image_path)