Matlab 保存指定像素大小的图片, 为什么保存图的实际大小与设置的不一致?

 matlab使用getframe函数保存指定像素大小的图片。

使用 set(gcf, 'position', [124,124,800,800]);设置图片位置和大小,可将图片保存为256x256大小。

(代码第3行)

仅把'position'参数从124改成125时,不能保存为期望的256x256大小,反而是320x320大小,这是为什么??(代码第4行)

试试其他几组position参数,也会出现保存尺寸不对的情况,这是为什么? 对position有什么要求吗?不解

figure
ppp=rand(256,256);
FigurePos=[124,124];
% FigurePos=[125,125];
set(gcf, 'position', [FigurePos(1),FigurePos(2),800,800]);	% 设置当前图窗的位置,屏幕左下方为原点,
set(gcf, 'color', 'w');                     % 背景颜色为白色
set(gca, 'units', 'pixels');	            % 设定单位为像素
set(gcf, 'units', 'pixels');
imagesc(ppp);
set(gca, 'position',[5, 5,256,256]);         % 确定画图区域的位置,即指定的分辨率
set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')   
ax = gca;
ax.Units = 'pixels';
pos = ax.Position;
img = getframe(gcf, pos);
imgSize=size(img.cdata);
imgSize=imgSize(1:2)
% imwrite(img.cdata,'thisFigure.png');
% close 
% FigurePos->imgSize
% (121,121) ->(320x320)  
% (122,122) ->(320x320) 
% (123,123) ->(256x256) 
% (124,124) ->(256x256) 
% (125,125) ->(320x320) 
% (126,126) ->(320x320) 
% (127,127) ->(256x256) 
% (128,128) ->(256x256) 
% (129,129) ->(320x320) 
% (130,130) ->(320x320) 
 

解决方法1:

使用 axis([xmin,xmax,ymin,ymax]);    Img_re = imresize(Img, [256, 256], 'bicubic');

                close  all
                xmax = 256; 
                ymax = 256;
                xmin = 0;
                ymin = 0;
                figure;
                set(gcf,'position',[60 60 256 256]);
                %   set(gcf,'color','none');
                %   subaxis(1,1,1, 'Spacing', 0.01, 'Padding', 0, 'Margin', 0); % Removes padding
                imagesc(signalstrength_all);
                axis([xmin,xmax,ymin,ymax]);  % 调整内部坐标轴显示范围,超出补零,设置为整数,否则出现0.5
                set(gca,'xtick',[],'ytick',[]); % Removes axis notation
                set(gca,'position',[0 0 1 1]);
                axis off
                h=gcf;
                h2=gca;
                Img = frame2im(getframe(gcf)); %Convert plot to image (true color RGB matrix).
                % 即 Img = getframe(gcf); 中的Img.cdata
                Img_re = imresize(Img, [256, 256], 'bicubic');
                imwrite(Img_re, 'outName.png');

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>