clear;clc;clf;
x=0:pi/100:2*pi;
y=sin(x);
plot(x,y)
set(gcf,'color',[1 1 1]) %設置背景色爲白色
title('測試圖像保存')
F=getframe(gcf); % 獲取整個窗口內容的圖像
F1=getframe; % 獲取座標軸爲界的圖像
imwrite(F.cdata,'test1.png')
imwrite(F1.cdata,'test2.png')
=======================
getframe獲得的是一個架構struct類型的數據,
其中cdata子域的內容纔可以用imwrite內容保存,用F.cdata表示
getframe(gcf) 即get current figure,獲得窗口內圖像,包含legend、title以及label。如果不添加gcf,默認爲gca(get current axis)。
imwrite 可以保存jpg、png等格式圖像,gif是7.0添加的,但是好像沒辦法保存爲動畫,只能保存第一幀。
與在圖像界面直接利用複製,或用file>save as...保存不同的是,imwrite的背景色爲窗口實際顏色,默認爲灰色(RGB表示爲[.7 .7 .7]),若想保留白色背景圖,需添加例子中的set gcf color命令。
=====================================================
保存多個圖像時,順序命名圖像文件名稱需用到 num2str 或 sprintf命令
num2str(kk) 將數字kk保存爲字符
sprintf('格式',kk)將kk保存爲需要格式的字符,尤其是圖像多於10個名稱需要前面補0時很好用
Note:保存多個圖像時不要亂動電腦、切換窗口,getframe保存當前圖像所在位置的屏幕圖像,相當於截屏。如果激活其他窗口,可就沒法保證截的啥了。
例:(使用ctrl+t取消註釋符後運行)
============================
% clear;clc;clf
% x=0:pi/100:2*pi;
% for kk=1:3
% plot(x,x.^kk)
% title(['y=x^',num2str(kk)])
% set(gcf,'color',[1 1 1])
% F(kk)=getframe(gcf);
% % imwrite(F(kk).cdata,['test-',num2str(kk),'.jpg'])
% imwrite(F(kk).cdata,['test-',sprintf('%03d',kk),'.png']) % 保存文件名序號爲3位數,如位數不足前面補0
% end
help很好用,在主界面也可以直接調用,例如,運行
>>doc plot