How to save multiple images by using saveas command?

21 次查看(过去 30 天)
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 个评论
Baisseyev Miram
Baisseyev Miram 2018-6-7
wasnt able to save multiple images, it only saved last one and give name 1 2 3 4...20.jpg
Image Analyst
Image Analyst 2018-6-7
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.

请先登录,再进行评论。

回答(2 个)

Image Analyst
Image Analyst 2018-6-7
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 个评论
Image Analyst
Image Analyst 2018-6-7
编辑:Image Analyst 2018-6-7
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 2018-6-7
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.

请先登录,再进行评论。


KSSV
KSSV 2018-6-7
Check the below demo code:
N = 10 ;
for i = 1:N
plot(rand(N,1)) ;
saveas(gcf,[num2str(i),'.jpg'])
end
  2 个评论
Image Analyst
Image Analyst 2019-10-18
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Printing and Saving 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by