【问题标题】:Export Matlab figure as PNG?将 Matlab 图导出为 PNG?
【发布时间】:2012-06-29 12:31:27
【问题描述】:

我需要自动将 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 手动导出图形效果很好,我想自动/从脚本中执行此操作。感谢您的任何提示!

【问题讨论】:

标签: matlab graphics png export


【解决方案1】:

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

saveas 命令可能对你有用 - 但对我来说也会改变一些分辨率。

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

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

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

【讨论】:

  • 'PaperSize''PaperPosition' 应该分别是 [6, 2][0 0 6 2],以匹配原始代码,否则这是要走的路。
  • 谢谢你们,太好了!标题移动了一些像素,但这是手动保存的唯一区别,没有问题。
  • 对此的后续问题:如何隐藏显示图形窗口?
  • 回答我自己的后续问题:hFig = figure(1);设置(hFig,'可见','关闭');
【解决方案2】:

我首选的从 MATLAB 生成 png 图的方法是 export_fig 实用程序,可在 MATLAB file exchange 获得。

这是一个例子:

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 像素、20 像素字体的 png。我确信它在内部做的事情与 bdecaf 的答案相同,但它已经全部封装在一个函数中,并且还有许多其他特性。

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

编辑现在可以正确设置图形大小了!

【讨论】:

    【解决方案3】:

    根据 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 设置,请使用 Google。这个答案是基于 bdecaf 和 Florian 的 99.9%,所以我将选择 bdecaf 的答案作为正确的答案。

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        试试:

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

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

        【讨论】:

          猜你喜欢
          • 2019-05-03
          • 2022-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-12
          • 1970-01-01
          • 1970-01-01
          • 2021-06-25
          相关资源
          最近更新 更多