2014-05-05 146 views
0

我有一个代码是创建和捕获一个jpg文件。但是,它往往会出现两种不同的图像尺寸。当我想将jpg文件制作成电影时,这成为一个问题。我已经设置了PaperPosition等一些其他的东西,但它仍然出来两个图像大小。图像大小的变化似乎是随机的,因为如果我运行代码两次,以前的尺寸之一的图像现在可以具有其他尺寸。MATLAB设置图像大小

nFrames = 8797; % Number of frames. Number of days between 1/1/1990 and 1/31/2014 
for k = 1:nFrames % 1/1/1990 to the number of days. 
    % Map of conterminous US 
    ax = figure(1); 
    set(ax, 'visible', 'off', 'units','normalized','outerposition',[0 0 1 1]); % Make window that shows up full sized, which makes saved figure clearer 
    ax = usamap('conus'); 
    states = shaperead('usastatelo', 'UseGeoCoords', true,... 
     'Selector',... 
     {@(name) ~any(strcmp(name,{'Alaska','Hawaii'})), 'Name'}); 
    faceColors = makesymbolspec('Polygon',... 
     {'INDEX', [1 numel(states)], 'FaceColor', 'none'}); % NOTE - colors are random 
    geoshow(ax, states, 'DisplayType', 'polygon', ... 
     'SymbolSpec', faceColors) 
    framem off; gridm off; mlabel off; plabel off 

    hold on 

    % Plot data 
    scatterm(ax,str2double(Lat_O3{k}), str2double(Lon_O3{k}), 40, str2double(data_O3{k})*1000, 'filled'); % Plot a dot at each Lat and Lon 
    hold on 

    % Colorbar 
    caxis([10 90]); 
    h = colorbar; 
    ylabel(h,'ppb'); 

    % Title 
    % date = datenum(2007, 04, 29) + k; % Convert t into serial numbers. 
    title(['O3 MDA8 Concentration ', datestr(cell2mat(date_O3(k)), 'mmm dd yyyy')]); % Title changes every daytitle(str); 

    % Capture the frame 
    mov(k) = getframe(gcf); % Makes figure window pop up 

    % Set size of image 
    set(gcf,'Units','points') 
    set(gcf,'PaperUnits','points') 

    size = get(gcf,'Position'); 
    size = size(3:4); 
    set(gcf,'PaperSize',size) 

    set(gcf,'PaperPosition',[0,0,size(1),size(2)]) 

    % Save as jpg (just specify other format as necessary) - Must set 'facecolor' to 'none' or else color of states turn out black 
    eval(['print -djpeg map_US_' datestr(cell2mat(date_O3(k)),'yyyy_mm_dd') '_O3_MDA8.jpg']); 
    % saveas(gca, ['WI_' datestr(cell2mat(Date)) '_PM25.jpg']); 
    clf 

end 

% Save as AVI file - Set 'facecolor' to 'white'. It looks better. 
close(gcf) 

如何设置图像尺寸(希望以全屏幕就像我试图set(ax, ...)这样做,当我保存JPG文件,它们都是相同的大小?

+0

我已经有一些成功的使用'subplot('position',[0 0 1 1]);'基本上在完整窗口中绘制“。另外 - 如果轴标签等内容发生变化,尺寸可能会发生变化。你有没有尝试绘制所有的轴? – Floris

+0

你在哪里放置了'subplot'命令?我没有“坐骑”吗?哪里? – shizishan

+0

我在创建一个图形之后,在创建一个图之前放置了'subplot':'figure;子图('position',[0 0 1 1]);情节(X,Y);轴关闭;'。我承认不熟悉地理阴谋例程,所以这可能不适用于你的情况。很难重现你的问题没有图片或数据。 – Floris

回答

0

你可以简单地调整图像以任何你想要的大小,所以你知道这将是不变的。

B = imresize(A, [numrows numcols]) 

看那imresize文档,如果您有关于它的其他具体问题。

+0

我不确定问题出在图像中的数据点数量上,还是出现在屏幕上的方式...... – Floris

+1

我也不是,但如果上面的代码被实现并且它仍然生成奇数图像大小,那么我们知道它不是这样。 – MZimmerman6

+0

只是铸出一条线,看看是否有东西叮咬:) – MZimmerman6