代码之家  ›  专栏  ›  技术社区  ›  patrik

如何防止打印更改图像分辨率?

  •  2
  • patrik  · 技术社区  · 11 年前

    我试图在matlab中创建一个文本图像(我认为它是这样称呼的)。这意味着我要创建一个包含文本的图像。问题是没有matlab函数可以做到这一点。解决方案是我使用 text 然后捕获图中的输出。

    一开始我用 getframe 以捕获输出。只要我在同一时间不在屏幕上做任何其他事情,这一切都很顺利。问题是|getframe |捕捉屏幕上当前的任何内容,这导致了令人讨厌的bug。为了解决这个问题,我打算改用|print|。然而,现在我遇到了使用打印时图像分辨率变化的问题。有人知道解决这个问题的方法吗?

    这是我迄今为止所做的尝试:

    xlen = 1200; ylen = 700;
    im = uint8(255*ones(ylen,xlen,3));
    hf = figure('color','white','units','normalized','position',[.1 .1 .8 .8]);
    image(ones(size(im)));
    set(gca,'units','pixels','position',[5 5 size(im,2)-1 size(im,1)-1],'visible','off')
    text('units','pixels','position',[1 ylen/2],'fontsize',60,'FontWeight','Bold','string','This is text')
    set(hf,'Units','pixels')
    set(hf,'Position',[100,100,xlen,ylen],'paperpositionmode','auto');
    print(hf, '-dpng', 'myText.png');
    
    2 回复  |  直到 11 年前
        1
  •  0
  •   zinjaai    11 年前

    在matlab中保存图像可能是一件非常困难的事情。 我通过使用mathlab文件交换中的export_fig找到了我的解决方案(请参见 http://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig ).

    出口无花果的一些目的是:

    • 屏幕上显示的图形/轴
    • 裁剪边框(可选)
    • 嵌入式字体(仅限pdf)
        2
  •  0
  •   patrik    11 年前

    好的,我终于找到了解决办法。Matlab默认使用150dpi分辨率。这有点奇怪,因为windows在其操作系统中使用96dpi分辨率,而mac使用72dpi分辨率。然而,据我所知,建议在打印材料上使用至少150 dpi以获得良好的质量。无论如何,由于windows使用96 dpi,因此很明显,您需要将图像分辨率设置为96 dpi print (参考matlabs功能 打印 )尺寸合适的身材。

    xlen = 1200; ylen = 700;
    im = uint8(255*ones(ylen,xlen,3));
    hf = figure('color','white','units','normalized','position',[.1 .1 .8 .8]);
    image(ones(size(im)));
    set(gca,'units','pixels','position',[5 5 size(im,2)-1 size(im,1)-1],'visible','off')
    text('units','pixels','position',[1 ylen/2],'fontsize',60,'FontWeight','Bold','string','This is text')
    set(hf,'Units','pixels')
    set(hf,'Position',[100,100,xlen,ylen],'paperpositionmode','auto');
    print(hf, '-dpng', '-r96','myText.png'); % SET RESOLUTION TO '-r96' for windows.