CODE2 发表于 2011-1-23 10:09:08

请教大侠,这段代码生成的图片怎么储存啊???

%单缝衍射
clc
clear all
a=-2*pi:0.0001*pi:2*pi;
P=(1-sinc(a)).^2; %当要求P 的曲线分布图时P=sinc(a).^2
plot(a,P)
lgray=zeros(256,3);
for i=0:255
    lgray(i+1,:)=(255-i)/255;
end
imagesc(P) %放大图像数据以覆盖当前色图的整个范围,并显示图片
colormap(lgray)


我要存储为1024*1280像素格式为BMP的图片,请教大侠,我是初学者,谢了先^_^

shark 发表于 2011-1-23 10:29:04

google   “imwrite”

CODE2 发表于 2011-1-23 12:32:39

回复【1楼】shark
-----------------------------------------------------------------------

imwrite是对一个矩阵处理,我就是不知道这个程序生成的图片的矩阵是啥???
谢啦~~~~~~~~

shark 发表于 2011-1-23 13:48:00

没装matlab,没试,大致是这样
imwrite(lgray,"temp.bmp);

CODE2 发表于 2011-1-23 15:03:12

回复【3楼】shark
-----------------------------------------------------------------------

lgray=zeros(256,3);
laray是个256*3的矩阵,画出来只是图片的一小部分~~~

CODE2 发表于 2011-1-23 19:26:36

自己顶~~~又出现尴尬的局面了~~~不能这样沉下去了

CODE2 发表于 2011-1-23 19:27:06

matlab保存图片的四种方法
1 从菜单保存 <<回目录可以保存为fig,eps,jpeg,gif,png,bmp等格式。
2 复制粘贴 <<回目录edit------〉copy figure,再粘贴到其他程序,如word
3 saveas函数 <<回目录saveas(gca,filename,fileformat)不过此函数不好用常常出错
4 print函数 <<回目录
(1)图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3.
(2)单引号字符串,指定存储格式。
用gcf可以获取当前窗口句柄。
png: '-dpng'
jpeg:'-djpeg',
tiff:   '-dtiff'
bmp:'-dbitmap'
(3)文件名。
详细用法请 help print
例:
>> x=-pi:2*pi/300:pi;>> y=sin(x);>> plot(x,y);>> print(gcf,'-dpng','abc.png')   % 保存为png格式的图片。
>> figure(2)            % 新建一个句柄为2的图形窗口。>> plot(x,cos(x));    % 在句柄为2的图形窗口上画图。>> grid>> print(2,'-djpeg','C:\abc.jpeg'); %将句柄为2的图形保存为jpeg/jpg格式的图片,文件名为'C:\abc.jpeg'。

CODE2 发表于 2011-1-23 19:28:59

在matlab中自动保存plot图像的程序

%Step 1. 先使所画的图最大化,即占满整个屏幕
scrsz = get(0,'ScreenSize');
figure1=figure('Position',);
或者(下面这种情况会把windows系统下面的任务栏也保存到图片中,不太好)
scrsz = get(0,'ScreenSize');
figure1=figure('Position',);

% Step 2. 生成数据并画图x=rand(100,1);
plot(x);
saveas(gcf,'filename','bmp');
saveas(gcf,'filename','emf');
saveas(gcf,'filename','jpg');

% Step 3. 清理现场
clear all;
clc;
close all;
下面的代码可以创建一个大小为整个屏幕的四分之一,位置在屏幕在左上角的一个figure对像,使用root对象的ScreenSize属性来取得屏幕的尺寸,ScreenSize是由四个元素组成的数据:)。
scrsz = get(0,'ScreenSize');
figure2=figure('Position',)

CODE2 发表于 2011-1-23 19:29:52

用imwrite怎样改输出图像的分辨率?

在Matlab里如何用imwrite将默认的分辨率(72)改为自己定义的输出图像(tif格式)的分辨率?

A.我觉得直接用RESHAPE就可以改变图象的分辨率呀
B.好像imwrite是通过Quality属性控制图像质量的,如:
>> imwrite(A.cdata,'gcagraph1.jpg','jpeg','Quality',10)
>> imwrite(A.cdata,'gcagraph2.jpg','jpeg','Quality',60)
>> imwrite(A.cdata,'gcagraph3.jpg','jpeg','Quality',100)
可以看到3张图片效果是不一样的,所占空间也不一样
而print是通过-r参数来控制分辨率

CODE2 发表于 2011-1-23 19:30:50

查了很多资料,不过我自己还是不会改~~~
页: [1]
查看完整版本: 请教大侠,这段代码生成的图片怎么储存啊???