将 Matlab 图形导出为 PNG



我需要自动将图形从 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

但图像.png大于 600x200 像素。使用"保存"按钮从图形窗口 GUI 手动导出图形效果很好,我想自动/从脚本中执行此操作。感谢您的任何提示!

我也知道保存的数字看起来与屏幕上相同的问题。

有一个saveas命令可能对你有用 - 但也为我做了一些分辨率更改。

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

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

(所以纸张尺寸为2x6英寸,打印分辨率为100dpi,PaperPosition很重要,否则你会有一些额外的边框。

我从 MATLAB 生成 png 图的首选方法是 MATLAB 文件交换中可用的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 渲染器(我认为看起来最好),则需要安装代笔。如果你不想搞砸它,你可以-painters更改为-opengl

立即编辑正确设置图形大小!

基于 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 时!我认为,对于光束者来说,96 DPI 通常应该是一个非常安全的选择。谷歌,如果您需要帮助找出系统的DPI设置。这个答案是基于 bdecaf 和 Florian 的 99,9%,所以我会让 bdecaf 的答案被选为正确的答案。

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

Amro 答案效果很好,生成图形后,将PaperPositionMode设置为 auto,打印尺寸将与屏幕尺寸相同。

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

尝试:

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

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

相关内容

  • 没有找到相关文章

最新更新