zhdgzhdg 发表于 2006-4-1 08:38

Figure图形导出为jpg图片的字体问题

<P>Figure窗口中的图形导出成jpg格式的图片时,所有的字号都会变大,而且坐标刻度值在有些情况下会改变。我想得到与屏幕上显示完全相同的jpg图形,但又不想用尺寸比较大的bmp. <BR>另:用print生成24位色的bmp时字体也会变大,用saveas生成的bmp不会变大,但只能保存成256色,会丢失颜色。 <BR>下面详细说明一下我的要求与解决方法。 <BR>由于所绘制的图形用到了colorbar,所以颜色比较多。 <BR><BR>1.保存成图片后要求颜色尽量不失真 <BR>2.图片要小 <BR>3.格式比较常见 <BR>4.方法要能够进行批量处理 <BR><BR>暂以bmp,jpg,gif三种常见格式的图片结合matlab导出图片的方法进行说明: <BR><BR>1.saveas 能生成bmp,jpg图形 <BR>此法生成的bmp只能为256色造成色彩失真。 <BR>jpg可以为24位色,但会造成字体显示或坐标显示与屏幕显示不符,字体变大。 <BR><BR>2.print 能生成bmp,jpg图形 <BR>此法生成的bmp可以为24位色,但和jpg一样都会产生字体和坐标显示与屏幕显示的不符,而且bmp文件比较大。 <BR><BR>3.菜单Edit-&gt;Copy Figure拷贝至剪贴版-&gt;保存-&gt;转换为jpg或gif格式 <BR><BR>该方法能生成24位色的与屏幕显示效果完全相同的bmp,再由第三方软件转化为jpg或gif格式解决文件大小问题。 <BR><BR>转化问题: <BR>   (1) jpg格式是有损压缩,在转化后图像质量有所损失。 <BR>   (2) gif格式是无损压缩,但只支持256色。用一般的格式转换工具将24位色bmp转换为gif格式时会出现色彩失真,该图形中虽colorbar,但所使用到的颜色种类没有超过256种,所以用Acdsee等专业的转换工具转换后其效果与bmp基本完全一样,效果比jpg好的多,而且文件也比jpg的要小。 <BR><BR>批量处理问题: <BR>   (1) Edit -&gt; Copy Figure ,经研究得出Copy Figure菜单的回调函数是 <BR>   uimenufcn(gcbf,'EditCopyFigure'); <BR>我们把gcbf换成gcf即可实现点击当前figure菜单Edit -&gt; Copy Figure 相同的功能,把图片拷贝到剪贴版中。 <BR>   (2) 从剪贴版获取图片并保存为bmp,此项操作有VB来完成。在VB中获取图片并保存的代码如下: <BR>   picBitmap = ClipBoard.GetData(vbCFBitmap) <BR>      savepicture picBitmap.picture,"test.bmp" <BR>其中picBitmap为picture控件,将程序编译为exe,在matlab里用system调用 <BR>   (3)由于没有找到将24位色bmp转换为gif的较好的模块,在生成所有bmp后,用Acdsee批量转换。 <BR><BR>用此方法生成了1700多幅gif图片,相应的bmp图片为2.4GB,gif图片仅为40MB左右,而且效果与bmp基本完全一样,肉眼难以辨别。</P>
页: [1]
查看完整版本: Figure图形导出为jpg图片的字体问题