前几天,有朋友在看了“你一定要知道的十款主流画图软件,淡定的工作从画出高品格图片开始”后留言说:高版本Matlab导出的图片,现在已经没有图片锯齿的问题了。
这意味着Matlab这款神器已经修复了画图这个bug,可以用来导出高分辨率的图片了。
下面和大家讨论下如何保存由Matlab绘制出来的图像,不完备的地方请留言指正。
当然这里我们只考虑Matlab自带的方法或函数,借助第三方截图软件导图的方法不在此讨论的范围中。
1. Copy到剪贴板
在Figure中使用菜单Edit中的Copy
figure,这样图像就复制到剪贴板,然后再贴到想要贴的位置即可。
2. 使用imwrite 函数 imwrite函数可以将图像数据写成图像文件。
当使用imshow将图像显示在坐标系以后,可以使用getimage函数获取坐标系中的图像文件,然后使用imwrite保存图像。代码如下: I=getimage(gcf); imwrite(I,'myphoto.jpg')
3. Saveas的方法 Saveas的方法有两种: (1) 菜单中直接另存为 在Figure中使用菜单File中的saveas,
然后选择保存形式(fig, eps, jpeg, gif, png, bmp等):
(2) saveas命令格式 Matlab提供saveas函数可以直接将指定Figure中的图像进行保存,函数使用格式为: saveas(figure_handle, filename, fileformat) 其中, figure_handle是图形句柄,如果图形窗口标题栏是’figure 2’,则句柄就是2。用gcf可以获取当前窗口句柄。 filename是文件名。 fileformat是指定存储格式。常用的有: BMP:‘-dbitmap’图片清晰,但文件极大 TIFF:‘-dtiff’ 图片较清晰,文件大小还行 PNG:‘-dpng’ 和TIFF差不多 JPEG:‘-djpeg’ 文件小,较清晰 GIF:‘-dgif’ 文件小但不清晰
推荐使用TIFF或PNG格式。
值得一提的是,saveas有个功能是保存为fig文件,下次可以直接编辑这个fig文件画图。另外还可以根据fig文件获取数据: h=get(gcf,myphoto) data=get(h,{'xdata','ydata','zdata'}) 这样,fig图形中的三维数据x,y,z将会以结构体的形式保存到data变量中。
4. print函数 用print函数导出图片有点高射炮打蚊子,但导出的图片确实高清。它可以将当前坐标系中的内容打印到文件,或者打印到剪切板,函数使用格式为: print(figure_handle, fileformat, filename) 文件格式:同saveas命令一样
Print函数可以对分辨率等各项指标进行设定,而且支持许多图片格式。
如要把图保存成jpeg格式,
可以用如下代码: print -djpeg -r300 myphoto 其中, -djpeg是格式,d表示device,jpeg表示格式。 -r300表示像素300dpi,r表示resolution的缩写,300dpi是分辨率数值,一般期刊要求黑白图片600dpi,彩色图片300dpi。 myphoto是文件名。
5. 总结 最后,我们总结一下Matlab导出图片的几种方法: (1) Copy到剪贴板,常用于把最新结果发给别人进行初步讨论。
(2) imwrite常与getframe 结合使用,主要目的不是为了保存高清图片,而是为了批量保存截图,为下一步生成动画或gif动图做准备。
(3) saveas最常用的功能并不是直接导图,而是保存为fig格式。将来需要细致修改时,可以方便打开并二次导出。
(4) print是日常绘图的首选。因为它对格式、分辨率等各项指标进行非常细致的定义,适合直接出图。 (END)
回复“热门”查看更多信息
科学计算编点程3M君,酷爱Matlab和Python编程,擅长图像识别和多媒体处理。不定时po一些自己在科学、工程计算编程中总结的经验教训、小技巧、实用工具和好玩的东西,欢迎关注~
文为原创,转载请联系我。 |
|