将Matlab输出为PNG?

时间:2012-06-29 12:31:27

标签: matlab graphics png export

我需要自动将数据从Matlab导出到PNG。我的身材大小为600x200像素:

hFig = figure(1); 
set(hFig, 'Color', [1 1 1]); % backgroundcolor white
set(hFig, 'Position', [500 500 600 200]) % size 600x200

我试过,例如

print -dpng image.png

但image.png大于600x200像素。使用“保存”按钮从图窗口GUI手动导出图形效果很好,我希望自动/从脚本执行此操作。谢谢你的提示!

5 个答案:

答案 0 :(得分:15)

我也知道数字保存的问题与屏幕上看起来不一样。

saveas命令可能对您有用 - 但也有一些改变对我而言。

我所知道的唯一方法是仔细设置这样的方方面面:

set(gcf,'PaperUnits','inches','PaperSize',[2,6],'PaperPosition',[0 0 2 6])
print('-dpng','-r100','test')

(因此纸张尺寸为2x6“并以100dpi打印,PaperPosition很重要,因为否则会有一些额外的边框。)

答案 1 :(得分:4)

我从MATLAB生成png图的首选方法是MATLAB file exchange提供的export_fig实用程序。

以下是一个例子:

set(gcf, 'Position', [100 100 500 500], 'Color', 'w')

x=0:0.01:10;
plot(x, sin(x))
set(gca, 'FontSize', 20, 'FontName', 'Arial')

export_fig 'strip-diff-far-forward.png' -painters -nocrop

这将创建一个500 x 500像素的png,带有20个像素字体。我确信在内部它会像bdecaf的答案那样做同样的事情,但它已经在你的函数中被封装,并且还有许多其他功能。

缺点是如果你使用-painters渲染器(我觉得它看起来最好),你需要安装ghostscript。如果您不想搞砸,可以将-painters更改为-opengl

修改现在正确设置图形尺寸!

答案 2 :(得分:1)

根据bdecaf的回答:

set(gcf,'PaperUnits','inches','PaperSize',[600/96,200/96],'PaperPosition',[0 0 600/96 200/96])
print('-dpng','-r96','test')

96是我系统的dpi。这给了我与保存功能完全相同的输出。对于Windows,dpi通常为96,有时为120.只需根据您的系统进行调整即可。请注意,在投影仪上,DPI可能会再次与您的系统不同,尤其是当您的系统具有120 DPI时!一般来说,我认为DPI应该是一个非常安全的选择。 Google如果您需要帮助来查找系统的DPI设置。这个答案是99.9%,基于bdecaf和Florian,所以我将选择bdecaf的答案作为正确答案。

编辑:600 = px中的水平图像大小,200 = px中的垂直图像大小

答案 3 :(得分:1)

Amro答案完美无缺,生成图后,将PaperPositionMode设置为auto,打印尺寸与屏幕尺寸相同。

set(gcf, 'PaperPositionMode','auto')   
print('-dpng','test.png')

答案 4 :(得分:0)

尝试:

set(hFig, 'PaperPositionMode','auto')   %# WYSIWYG
print -dpng -r0 image.png               %# at screen resolution

这表示它会生成与屏幕上显示的图像大小相同的图像。