搜索
bottom↓
回复: 9

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

[复制链接]

出0入0汤圆

发表于 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的图片,请教大侠,我是初学者,谢了先^_^

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2011-1-23 10:29:04 | 显示全部楼层
google   “imwrite”

出0入0汤圆

 楼主| 发表于 2011-1-23 12:32:39 | 显示全部楼层
回复【1楼】shark
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-1-23 13:48:00 | 显示全部楼层
没装matlab,没试,大致是这样
imwrite(lgray,"temp.bmp);

出0入0汤圆

 楼主| 发表于 2011-1-23 15:03:12 | 显示全部楼层
回复【3楼】shark
-----------------------------------------------------------------------

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

出0入0汤圆

 楼主| 发表于 2011-1-23 19:26:36 | 显示全部楼层
自己顶~~~又出现尴尬的局面了~~~不能这样沉下去了

出0入0汤圆

 楼主| 发表于 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'。

出0入0汤圆

 楼主| 发表于 2011-1-23 19:28:59 | 显示全部楼层
在matlab中自动保存plot图像的程序

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

% 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是由四个元素组成的数据:[left,bottom,width,height])。
scrsz = get(0,'ScreenSize');
figure2=figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])

出0入0汤圆

 楼主| 发表于 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参数来控制分辨率

出0入0汤圆

 楼主| 发表于 2011-1-23 19:30:50 | 显示全部楼层
查了很多资料,不过我自己还是不会改~~~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-1 09:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表