How to save multiple images by using saveas command?
Show older comments
Hi, i am using stl file reader (https://www.mathworks.com/matlabcentral/fileexchange/22409-stl-file-reader?s_tid=srchtitle) to read stl model and made some changes to obtain multiple images with differen views, so i want save them all. i tried saveas command by wasnt able to save, so can somebody help me? There is a code
fv = stlread('cameraleft.stl');
%%Render
% The model is rendered with a PATCH graphics object. We also add some dynamic
% lighting, and adjust the material properties to change the specular
% highlighting.
for i=0:5:90
k=1:20;
patch(fv,'FaceColor', [0.8 0.8 1.0], ...
'EdgeColor', 'none', ...
'FaceLighting', 'gouraud', ...
'AmbientStrength', 0.15);
% Add a camera light, and tone down the specular highlighting
camlight('headlight');
material('dull');
% Fix the axes scaling, and set a nice view angle
axis('image');
figure
v1=view([i -180]);
axis off
temp=['',num2str(k),'.jpg'];
saveas(gca,temp);
end
5 Comments
Image Analyst
on 7 Jun 2018
You forgot to attach 'cameraleft.stl' in a .zip file, and forgot to show where you called saveas().
Baisseyev Miram
on 7 Jun 2018
Image Analyst
on 7 Jun 2018
What exactly does "wasnt able to save" mean? Was a jpg file saved or not? If it was saved, does it look OK or not? If it wasn't saved, was an error thrown?
Baisseyev Miram
on 7 Jun 2018
Image Analyst
on 7 Jun 2018
That's because you used k instead of i. You should have done
fileName = sprintf('%d.jpg', i); % Create filename.
saveas(gca, fileName);
See KSSV's code below.
Answers (2)
Image Analyst
on 7 Jun 2018
You used k instead of i. You should have done
fileName = sprintf('%d.PNG', i); % Create filename from i.
saveas(gca, fileName);
I don't even know what the point of k is. Why did you even create it?
Don't use JPG format - use PNG for higher quality. With the code you'll get 0.PNG, 5.PNG, 10.PNG, ..... 90.PNG.
4 Comments
Baisseyev Miram
on 7 Jun 2018
Baisseyev Miram
on 7 Jun 2018
Image Analyst
on 7 Jun 2018
Edited: Image Analyst
on 7 Jun 2018
If you want to save images, try using getframe() and then saving that with imwrite(). Set an image counter to zero before the loop:
imageCounter = 0;
Then, in the loop, get the image and save it with the right name:
rgbImage = getframe(gca);
imageCounter = imageCounter + 1;
fileName = sprintf('%d.PNG', imageCounter); % Create filename from imageCounter.
imwrite(rgbImage, fileName);
Baisseyev Miram
on 7 Jun 2018
KSSV
on 7 Jun 2018
Check the below demo code:
N = 10 ;
for i = 1:N
plot(rand(N,1)) ;
saveas(gcf,[num2str(i),'.jpg'])
end
2 Comments
Arika Amasarao
on 18 Oct 2019
Excellent Sir,
Sir,If i want to save this in new folder?
Image Analyst
on 18 Oct 2019
You'd do
folder = 'c:\whatever'; % Change this to whatever you want.
for k = 1 : N
baseFileName = sprintf('%d.png', k);
fullFileName = fullfile(folder, baseFileName);
saveas(gca, fullFileName); % Save current axes (not the whole figure).
end
Categories
Find more on Graphics Performance in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!