from tifffile import TiffFile, TiffWriter, memmap
# if input is memory-mappable ImageJ hyperstack format
src = memmap('input.tif', mode='r')
dst = memmap('output1.tif', shape=src.shape, dtype=src.dtype, imagej=True)
for frame in range(src.shape[0]):
dst[frame] = src[frame] + 0 # processing
del dst
del src
# iterate through multi-page TIFF
with TiffFile('input.tif') as src:
assert src.is_imagej
metadata = src.imagej_metadata
with TiffWriter('output2.tif', imagej=True) as dst:
for page in src.series[0].pages:
frame = page.asarray()
frame += 0 # processing
dst.write(
frame,
contiguous=True,
photometric=page.photometric,
colormap=page.colormap,
resolution=page.resolution,
resolutionunit=page.resolutionunit,
metadata=metadata,
)
metadata = None