MATLAB如何保存显示的图片不留空白区域

    MATLAB中显示图像都是在figure上显示,而figure一般显示的图像有很大的空白区域,如果不进行任何处理,在写论文时候,这个空白区域会很占据地方,让人头疼,那如何处理呢,程序如下:

    直接用imwrite保存显示图片:

    原图:

                                          

    代码:

figure(3);imshow(Im3a);set(gca, 'position', [0 0 1 1 ]);axis normal;
rectangle('Position',[300,200,100,200],'EdgeColor','g','LineWidth',3);
AFrame=getframe(gcf);
imwrite(AFrame.cdata,strcat('C:\Users\Administrator\Desktop\234\',num2str(1),'.jpg')) %存储调整过大小的图片
close(gcf);
      保存的结果:

                                           

      以上是对显示图像如何没有空白区域的,对于其他的函数图像,如单纯只是plot之类的绘图,又有坐标轴之类的,如何使绘制的图像非常紧凑的显示,使得空白区域最少呢,对于只有一个图,不是subplot显示的,程序如下:

      

clear
clc
x=1:1:1000;
y=sin(x);
figure(1);
plot(x,y,'r.')
legend('相机1','相机2','相机3')
title('偏离度曲线','Fontsize', 10);
% set(gcf,'Fontsize',16);
set(gca,'FontSize',10);
set(gca, 'Position', get(gca, 'OuterPosition') - get(gca, 'TightInset') * [-1 0 1 0; 0 -1 0 1; 0 0 1 0; 0 0 0 1]);
saveas(gcf,['C:\Users\Administrator\Desktop\234\','test1.jpg'])
     结果如下:


     左边是显示的图,右边是保存的图,可见,已经尽可能多的使空白区域最少了。下面是针对于由多个子图的,一般用的subplot,程序及结果如下:

clear;clc;

x=1:0.001:2*pi;
y=sin(x);

Color=[1 0 0;0 1 0;0 0 1;1 1 0;1 0 1;0 1 1;1 1 1];
figure('color', [1, 1, 1], 'position', [0, 0, 800,400]);  % 为区分边界,将底色改为灰色
set(gcf, 'InvertHardCopy', 'off'); % 让设置的背景色有效
sub_row = 3; % 子图行数
sub_col = 3; % 子图列数
for i_row = 1 : sub_row
    for j_col = 1 : sub_col
        order = (i_row-1)*sub_col+j_col; % 子图的顺序
        subplot(sub_row, sub_col, order);
        plot(x,y,'g.');
        RemoveSubplotWhiteArea(gca, sub_row, sub_col, i_row, j_col); % 去除空白部分
    end
end

% 对应子函数:
function [] = RemoveSubplotWhiteArea(gca, sub_row, sub_col, current_row, current_col)
% 设置OuterPosition
sub_axes_x = current_col*1/sub_col - 1/sub_col;
sub_axes_y = 1-current_row*1/sub_row; % y是从上往下的
sub_axes_w = 1/sub_col;
sub_axes_h = 1/sub_row;
set(gca, 'OuterPosition', [sub_axes_x, sub_axes_y, sub_axes_w, sub_axes_h]); % 重设OuterPosition

% TightInset的位置
inset_vectior = get(gca, 'TightInset');
inset_x = inset_vectior(1);
inset_y = inset_vectior(2);
inset_w = inset_vectior(3);
inset_h = inset_vectior(4);

% OuterPosition的位置
outer_vector = get(gca, 'OuterPosition');
pos_new_x = outer_vector(1) + inset_x; % 将Position的原点移到到TightInset的原点
pos_new_y = outer_vector(2) + inset_y;
pos_new_w = outer_vector(3) - inset_w - inset_x; % 重设Position的宽
pos_new_h = outer_vector(4) - inset_h - inset_y; % 重设Position的高

% 重设Position
set(gca, 'Position', [pos_new_x, pos_new_y, pos_new_w, pos_new_h]);    %(此程序摘自博客 http://blog.csdn.net/shanchuan2012/article/details/53980288 )
 

    左边为运行结果图,右边为保存结果图,对于显示多个子图的这个,当超过四五行的时候会出现下图所示的有些子图不显示的问题,该问题不知道怎么解决,但大家可以 http://www.ilovematlab.cn/thread-453586-1-1.html 这个网址去看看。

                                          

       好,今天整理到这,希望对大家有帮助。

  • 11
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当使用MATLAB保存图片时,有时候可能会发现图片上出现了许多空白,这可能是因为你的代码中没有恰当地设置图像的边距和尺寸。因此,你可以使用下列解决方法: 1. 使用“imwrite”函数。如果你使用matlab的默认“saveas”函数保存图片,那么会自动添加白边,影响图片质量。你可以使用“imwrite”函数来保存图像,然后手动裁剪空白边,这样你就可以获得更好的图片质量。 2. 设置图像的尺寸和边距。使用“figure”函数可以设置图像的大小,可以通过设置“Position”属性来设置图像的大小,例如:figure('Position', [100 100 1024 768])。另外,使用“subplot”函数可以设置图像的边距。 3. 调整Axes的位置。如果你在绘制图像时使用了Axes,你可以通过调整Axes的位置,让图像填满整个绘图区域。你可以使用“set”函数来手动调整Axes的位置和大小。 总之,使用MATLAB保存图片时,要注意设置图像的尺寸和位置,以获得更好的图像质量。 ### 回答2: MATLAB是一款常用的科学计算软件,它可以生成各种图形,但是很多应用程序都会遇到保存图像时空白太多的问题,这主要是由于MATLAB默认使用了自适应坐标轴。用户可以通过以下几种方法来解决这个问题: 1. 使用tightfig()函数 可以使用toolbox中的tightfig()函数来自动调整图像空白区域,该函数的使用方法非常简单,例如: figure; plot(X,Y); tightfig(); 执行上述代码后,生成的图片将会挤掉多余的空白区域,从而达到更小的文件大小。 2. 手动调整坐标轴范围 另一种方式是使用axis()函数手动调整坐标轴范围,例如: figure; plot(X,Y); axis tight; print('-dpng','-r300','myplot.png'); 执行上述代码后,可以手动调整坐标轴范围,从而生生成更紧凑的图形。在此之后,再使用print()函数将图像保存在本地。 3. 修改Matlab默认配置 也可以通过修改MATLAB默认配置的方式来解决该问题,具体步骤如下: (1)使用edit命令打开MATLAB的startup.m文件; (2)添加以下代码: set(0,'DefaultAxesLooseInset',[0,0,0,0]); 注意:上面的参数可以进行调整,以适合自己的需求。 (3)保存后关闭文件,并在MATLAB中执行rehash toolboxcache命令重新载入文件。 总之,MATLAB保存图片空白太多的问题可以通过使用tightfig()函数、手动调整坐标轴范围,或修改默认配置解决,这些方法都可以让我们在使用MATLAB工具时,更加高效、方便。 ### 回答3: 在使用Matlab保存图片时会发现,保存图片会出现很多空白,这是由于Matlab默认保存图片大小与画布大小不一致所造成的。因此,解决这一问题的办法就是可以针对Matlab保存图片时的设置进行调整。 首先,要确定画布的大小。在Matlab编辑窗口中,可以通过点击“图形”菜单中的“属性编辑器”来打开图形属性编辑器,在“Figure Properties”中可以查看和调整画布大小。 其次,调整保存图片时的参数。在Matlab中,可以通过设置“-r0”参数来实现保存图片没有空白的目的,具体的方法为:在命令行工具中输入“print(‘-r0’,‘-dpng’,‘filename.png’)”,其中‘filename.png’为要保存图片文件名。 另外,Matlab还提供了其他的参数,例如‘-r100’表示以100dpi的分辨率保存图片。可以通过不断尝试,选择最适合自己需求的保存方法。 综上所述,Matlab保存图片空白太多,是由于保存图片大小和画布大小不一致所造成的。可以通过调整画布大小,设置保存参数等方式来解决。在Matlab的命令行工具中可以通过输入命令调整保存图片参数,具体方法需要根据实际需求进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值