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

时间:2014-08-19 07:35:49

标签: matlab printing

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

一开始我使用getframe来捕获输出。只要我没有同时在屏幕上做任何其他事情,这就完全没问题了。问题是| getframe |捕获屏幕上的任何内容,这些都导致了烦人的错误。为了解决这个问题,我打算使用| 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 个答案:

答案 0 :(得分:0)

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

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

  • 图/轴在屏幕上显示再现
  • 裁剪边框(可选)
  • 嵌入字体(仅限pdf)

答案 1 :(得分:0)

好的,我终于找到了解决方案。 Matlab默认使用150 dpi分辨率。这有点奇怪,因为Windows在他们的操作系统中使用96 dpi分辨率,mac使用72 dpi。但是,据我所知,建议在印刷材料上使用至少150 dpi以获得高质量。无论如何,由于windows使用96 dpi,很明显你需要将图像分辨率设置为96 dpi以及print(参考matlabs函数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', '-r96','myText.png'); % SET RESOLUTION TO '-r96' for windows.