from tifffile import imread as tifffile_imread
from tifffile import imwrite as tifffile_imwrite
__all__ = ['imread', 'imsave']
def imsave(fname, arr, **kwargs):
"""Load a tiff image to file.
Parameters
----------
fname : str or file
File name or file-like object.
arr : ndarray
The array to write.
kwargs : keyword pairs, optional
Additional keyword arguments to pass through (see ``tifffile``'s
``imwrite`` function).
Notes
-----
Provided by the tifffile library [1]_, and supports many
advanced image types including multi-page and floating-point.
This implementation will set ``photometric='RGB'`` when writing if the first
or last axis of `arr` has length 3 or 4. To override this, explicitly
pass the ``photometric`` kwarg.
This implementation will set ``planarconfig='SEPARATE'`` when writing if the
first axis of arr has length 3 or 4. To override this, explicitly
specify the ``planarconfig`` kwarg.
References
----------
.. [1] https://pypi.org/project/tifffile/
"""
if arr.shape[0] in [3, 4]:
if 'planarconfig' not in kwargs:
kwargs['planarconfig'] = 'SEPARATE'
rgb = True
else:
rgb = arr.shape[-1] in [3, 4]
if rgb and 'photometric' not in kwargs:
kwargs['photometric'] = 'RGB'
return tifffile_imwrite(fname, arr, **kwargs)
def imread(fname, **kwargs):
"""Load a tiff image from file.
Parameters
----------
fname : str or file
File name or file-like-object.
kwargs : keyword pairs, optional
Additional keyword arguments to pass through (see ``tifffile``'s
``imread`` function).
Notes
-----
Provided by the tifffile library [1]_, and supports many
advanced image types including multi-page and floating point.
References
----------
.. [1] https://pypi.org/project/tifffile/
"""
if 'img_num' in kwargs:
kwargs['key'] = kwargs.pop('img_num')
return tifffile_imread(fname, **kwargs)