matlab中figure窗口图片保存的问题(转)

Figure窗口中的图形导出成jpg格式的图片时,所有的字号都会变大,而且坐标刻度值在有些情况下会改变。我想得到与屏幕上显示完全相同的jpg图形,但又不想用尺寸比较大的bmp.
另:用print生成24位色的bmp时字体也会变大,用saveas生成的bmp不会变大,但只能保存成256色,会丢失颜色。
下面详细说明一下我的要求与解决方法。
由于所绘制的图形用到了colorbar,所以颜色比较多。

1.保存成图片后要求颜色尽量不失真
2.图片要小
3.格式比较常见
4.方法要能够进行批量处理

暂以bmp,jpg,gif三种常见格式的图片结合matlab导出图片的方法进行说明:

1.saveas 能生成bmp,jpg图形
此法生成的bmp只能为256色造成色彩失真。
jpg可以为24位色,但会造成字体显示或坐标显示与屏幕显示不符,字体变大。

2.print 能生成bmp,jpg图形
此法生成的bmp可以为24位色,但和jpg一样都会产生字体和坐标显示与屏幕显示的不符,而且bmp文件比较大。

3.菜单Edit->Copy Figure拷贝至剪贴版->保存->转换为jpg或gif格式

该方法能生成24位色的与屏幕显示效果完全相同的bmp,再由第三方软件转化为jpg或gif格式解决文件大小问题。

转化问题:
      (1) jpg格式是有损压缩,在转化后图像质量有所损失。
      (2) gif格式是无损压缩,但只支持256色。用一般的格式转换工具将24位色bmp转换为gif格式时会出现色彩失真,该图形中虽colorbar,但所使 用到的颜色种类没有超过256种,所以用Acdsee等专业的转换工具转换后其效果与bmp基本完全一样,效果比jpg好的多,而且文件也比jpg的要 小。

批量处理问题:
      (1) Edit -> Copy Figure ,经研究得出Copy Figure菜单的回调函数是
      uimenufcn(gcbf,'EditCopyFigure');
我们把gcbf换成gcf即可实现点击当前figure菜单Edit -> Copy Figure 相同的功能,把图片拷贝到剪贴版中。
      (2) 从剪贴版获取图片并保存为bmp,此项操作有VB来完成。在VB中获取图片并保存的代码如下:
      picBitmap = ClipBoard.GetData(vbCFBitmap)
       savepicture picBitmap.picture,"test.bmp"
其中picBitmap为picture控件,将程序编译为exe,在matlab里用system调用
      (3)由于没有找到将24位色bmp转换为gif的较好的模块,在生成所有bmp后,用Acdsee批量转换。

用此方法生成了1700多幅gif图片,相应的bmp图片为2.4GB,gif图片仅为40MB左右,而且效果与bmp基本完全一样,肉眼难以辨别。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值