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