matlab 打印图片

matlab新手入门,发现想要保存一张确定尺寸的高分辨率图片存在以下的问题:

matlab版本:r2020a

目的:获得一张尺寸为8cmX5cm的位图

首先开始绘图通用设置:

fig=figure('Units','centimeters', 'Position',[15 8 8 5]);

打印图片:

print(gcf, 'fig,'text.jpg', '-r300','-djpeg'');

查看图片:发现图片大小为56k,分辨率为:945X591, 水平、垂直分辨率为96dpi,此图片放到word中实际尺寸为:15.64cmX25cm

实际尺寸与绘图尺寸完全不同

查找问题发现:

1. matlab绘图存在画图与打印的区别。画图尺寸的设置是图窗fig的大小,打印print的大小则是实际尺寸的大小;

2.分辨率与图像大小是不一致的。在本人以往的认知中,分辨率的大小可以等同于采样率,比如当有1cmX1cm的图像时,此时图像实际尺寸是固定的,而1280的分辨率和1920的分辨率只表示图像长度方向被采样1280次还是1920次,但这个认知在matlab绘图的print中似乎是不合适的。

具体细节可以阅读:

http://t.csdnimg.cn/cBYgq

通过阅读以上链接中的内容,我意识到了:在matlab中,像素大小是恒定的,系统的dpi会对图像大小产生很大影响。比如:

在win系统中,1 pixel = 1/96 inch,这就是所谓的96dpi。

当画图时,若设置8cm,则8cm=8/2.54inch=(8/2.54)*96pixels=303pixels;

                                            5cm=5/2.54inch=(5/2.54)*96pixels=189pixelx;

因此绘图时尺寸为:303X189pixels=3.15X1.97inch

当8cmX5cm的图片要print为jpg格式,且分辨率设置为‘-r300’,则垂直、水平分辨率为1inch=300pixels,此时会存在分辨率转换,即机器的分辨率为96dpi,但我希望是300dpi,此时matlab会先绘制成300dpi,再转为电脑默认的96dpi,

因此图片实际大小为:(3.15*300)X(1.97*300)=945X591pixels,

print保存到机器中后就变为:(945/96)X(591/96)=9.84X6.16inch=25X15.64cm,这也是word中显示的尺寸。

————————————

但是,如果打印为无压缩的tif或者打印为png格式,不会出现图片变大的问题

1. print(fig,'test.png', '-r300','-dpng');

图片大小:945X591pixels,放到word中,图片大小为:8cmX5cm

2.print(fig,'test.tif', '-r300','-dtiffn');

图片大小:945X591pixels,水平分辨率、垂直分辨率为:300dpi,放到word中,图片大小为:8cmX5cm

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值