How to save multiple images by using saveas command?

23 visualizzazioni (ultimi 30 giorni)
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 Commenti
Baisseyev Miram
Baisseyev Miram il 7 Giu 2018
wasnt able to save multiple images, it only saved last one and give name 1 2 3 4...20.jpg
Image Analyst
Image Analyst il 7 Giu 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.

Accedi per commentare.

Risposte (2)

Image Analyst
Image Analyst il 7 Giu 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 Commenti
Image Analyst
Image Analyst il 7 Giu 2018
Modificato: Image Analyst il 7 Giu 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
Baisseyev Miram il 7 Giu 2018
Again same problem, firstly rgbImage was struct data type so i made last row like this imwrite(rgbImage.cdata, fileName); and again in saved image was only background i mean without object, when i tried manually(from figure save command) save evething was ok.

Accedi per commentare.


KSSV
KSSV il 7 Giu 2018
Check the below demo code:
N = 10 ;
for i = 1:N
plot(rand(N,1)) ;
saveas(gcf,[num2str(i),'.jpg'])
end
  2 Commenti
Arika Amasarao
Arika Amasarao il 18 Ott 2019
Excellent Sir,
Sir,If i want to save this in new folder?
Image Analyst
Image Analyst il 18 Ott 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

Accedi per commentare.

Categorie

Scopri di più su Printing and Saving in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by