我尝试在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');
答案 0 :(得分:0)
在matlab中保存图像可能是一个真正的困难。 我通过使用mathlab文件交换中的export_fig找到了我的解决方案(参见 http://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig)。
出口无花果的一些目标是:
答案 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.