MATLAB Answers

How to show Tiff stacks

366 views (last 30 days)
Soum on 11 Nov 2013
Answered: Shep Bryan on 16 Apr 2020
Hi everyone;
I'm trying to show a tiff stack '57 images as one file' but I faced this problem:
Warning: Can only display one frame from this multiframe file:
> In imuitools\private\getImageFromFile at 20
In imuitools\private\imageDisplayParseInputs at 74
In imshow at 198
In Prg at 4
how can I display a tiff stack image? and after I applied some processes how can I collect them again 'refile them'

Accepted Answer

Jeff E
Jeff E on 12 Nov 2013
You can read each tiff image in one at a time using imread (note I'm making some you do indeed have a multipage tiff):
tiff_info = imfinfo('2-A^11815^52071.tif'); % return tiff structure, one element per image
tiff_stack = imread('2-A^11815^52071.tif', 1) ; % read in first image
%concatenate each successive tiff to tiff_stack
for ii = 2 : size(tiff_info, 1)
temp_tiff = imread('2-A^11815^52071.tif', ii);
tiff_stack = cat(3 , tiff_stack, temp_tiff);
And you can then use the 'append' switch to write each tiff as a new image in a multi-page tiff:
%write a Tiff file, appending each image as a new page
for ii = 1 : size(tiff_stack, 3)
imwrite(tiff_stack(:,:,ii) , 'new_stack.tif' , 'WriteMode' , 'append') ;
Soum on 12 Nov 2013
thank you but I mean I've a 57 images .tiff 'separated' and I wanna read
them as one multipage tiff image

Sign in to comment.

More Answers (1)

Shep Bryan
Shep Bryan on 16 Apr 2020
In my case it ends up being a couple orders of magnitude faster to avoid using imread. Try:
function data = FastTiff(filename)
warning('off','all') % Suppress all the tiff warnings
tstack = Tiff(filename);
[I,J] = size(;
K = length(imfinfo(filename));
data = zeros(I,J,K);
data(:,:,1) =;
for n = 2:K
data(:,:,n) =;
Notice that I suppress the warnings in my code because the format of my data is strange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!