How to save multiple images by using saveas command?
이전 댓글 표시
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
Image Analyst
2018년 6월 7일
You forgot to attach 'cameraleft.stl' in a .zip file, and forgot to show where you called saveas().
Baisseyev Miram
2018년 6월 7일
Image Analyst
2018년 6월 7일
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
2018년 6월 7일
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
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
Baisseyev Miram
2018년 6월 7일
Baisseyev Miram
2018년 6월 7일
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
2018년 6월 7일
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
Arika Amasarao
2019년 10월 18일
Excellent Sir,
Sir,If i want to save this in new folder?
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
카테고리
도움말 센터 및 File Exchange에서 Graphics Performance에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!