我最近做一个项目,其中有个步骤是将word文档中的数学公式提取成图片。我尝试很多方法但是都不尽人意。我的方法是:把word文件解压,在word/media中找到了许多wmf格式的文件,它们正是在word文档中的公式;但是用画图转换分辨率低,原生Photoshop不支持...于是我想到了写一个C#程序用于批量转换wmf。


写程序之前,先看一看wmf文件的概念

Wmf是Windows Metafile 的缩写,简称图元文件,它是 微软公司 定义的一种Windows平台下的图形文件格式。
它是属于矢量类图形,是由简单的线条和封闭线条(图形)组成的 矢量图 。


既然是微软定义的,又是矢量图,那么我开始想:微软大大开发的C#一定有类或者方法可以读取或者转换wmf文件...于是我抱着试一试的心态开始写代码...

我首先搞了个winform,加了个button及Click方法,并且在Click中写了解析代码

            OpenFileDialog dialog = new OpenFileDialog();dialog.ShowDialog();string path = Path.GetFullPath(dialog.FileName);Bitmap bitmap = new Bitmap(path);bitmap.Save(path, System.Drawing.Imaging.ImageFormat.Png);

没想到成功读取并转换了格式

但是,可以看到,导出的图片尺寸很小很小,图像很模糊

于是,我给代码加了一些小小的细节~

(FolderBrowserDialogEx来自于SunnyUI)

            FolderBrowserDialogEx folderBrowser = new FolderBrowserDialogEx();folderBrowser.ShowDialog(this);string scanDirectoryPath = folderBrowser.DirectoryPath;foreach (string d in Directory.GetFileSystemEntries(scanDirectoryPath)){Image image = Image.FromFile(d);Console.WriteLine("Now: " + d.ToString());Bitmap bitmap = new Bitmap(image);bitmap.Save(d.Replace(".png", "N") + ".png");}Console.WriteLine("Finished");

最核心的代码如下

                Image image = Image.FromFile(d);Bitmap bitmap = new Bitmap(image);bitmap.Save(d.Replace(".png", "N") + ".png");//简简单单的代码完成简简单单的转换

这样,导出的图片宽度都是默认的512像素

并且可以完成批量转换

现在图片就清晰多啦

C#实现格式转换:wmf转png相关推荐

  1. bmp,jpg,png,tif,wmf,emf与eps图片格式转换

    wmf/emf是两种Microsoft Windows的图形文件格式.它是一个矢量图格式,但是也允许包含位图.本质上,一个WMF文件保存一系列可以用来重建图片的Windows GDI命令.在某种程度上 ...

  2. java wmf 转 svg_java处理word公式(wmf格式转换成svg)

    做word文档在线预览,把word转化成html后,里面的公式的格式为.wmf格式,在浏览器中不能显示,故我把wmf格式转化成svg格式,这样就能在浏览器中显示了 //wmf格式的图片转换成svg格式 ...

  3. CAD图纸如何转换WMF图片格式?

    很多人在制图的时候会用到它.那么,CAD图纸怎么导出WMF格式?CAD中绘制的图纸,需要保存为WMF格式的,该怎么导出这个格式的文件呢?其实WMF格式是一种图元文件.图元文件的扩展名包括.WMF和.E ...

  4. java处理word公式(wmf格式转换成svg)(svg格式转换成png)

    wmf格式转换成svg 把wmf格式转成svg格式,这样就能在浏览器中显示了 需要第三方jar包:wmf2svg-0.9.6.jar //wmf格式的图片转换成svg格式 private void c ...

  5. CAD格式转换大全你想要的转换格式这里都有

    怎么才能快捷高 效的转换出CAD格式图纸困扰了许多小伙伴们,如果需要对CAD图纸进行多种格式转换需要怎样做呢?这时就需要用到迅捷CAD转换器了!今天就和大家分享一下怎么对多种格式图纸进行转换吧!大家快 ...

  6. 如何将visio格式转换成EPS

    如何将Visio图形转换成EPS格式 因为TeX系统只支持EPS格式的图形插入,但平常我们用得最广泛的是Visio,因此如何有效的转换成为了广大TeX初学者面临的一个比较棘手的问题. 方法1:使用wm ...

  7. 使用CxImage进行图形和格式转换(CBitmap to jpg or png or gif or bmp)

    CxImage类库介绍 CxImage类库是一个几乎可以管理所有的图象文件的C++类库.它可以快捷地存取.显示.转换各种图像. 其他的图形库?有那么多优秀的图形库,如OpenIL,FreeImage, ...

  8. EPS文件格式及其与PDF、SVG格式转换分析C#

    这段时间做课题,研究EPS转SVG的问题,特此对这一阶段的分析做一个总结. 目录 EPS文件 EPS解析器 Inkscape实现 Aspose实现 eps转svg 代码 EPS文件 eps文件 EPS ...

  9. FFmpeg学习4:音频格式转换

    前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式 ...

最新文章

  1. Windows Server 2012 文件服务器群集
  2. 【循序渐进学Python】1. Python基础知识
  3. [总结] 平衡树总结
  4. bzoj1997 [HNOI2010]平面图判定Plana
  5. poj 3090 amp;amp; poj 2478(法雷级数,欧拉函数)
  6. mysql 索引 lt =,当同时使用gt; =和lt; =时如何索引MySQL表?
  7. Spark基础学习笔记07:搭建Spark HA集群
  8. Shiro-从数据表中初始化资源和权限
  9. Ubuntu4.04 安装Mesos
  10. 论一只爬虫的自我修养11:Scrapy框架之初窥门径
  11. Docker神器之百度云下载(群辉 LEDE)
  12. 关于C语言二级指针正确使用总结
  13. 【spark运行报错】
  14. 计算机发展的五个阶段那个是转折点,计算机网络的发展有哪几个转折点
  15. 今天是Knuth的70寿辰
  16. SaaS软件建立平台生态的挑战
  17. ue4 体积光与体积雾 快速入门
  18. 手写小程序:字符串分隔
  19. CESIUM-加点操作,entity和primitive
  20. mcjava盗版联机_MC联机教程

热门文章

  1. mcnpf5输出结果_MCNP学习笔记-计数卡F6
  2. HAC Ada Compiler(开源Ade编译器)
  3. Blueprint介绍和使用
  4. DataBinding使用指南(一)DataBinding基本使用,双向绑定,ListView RecycleView使用
  5. 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅
  6. 常见的一些威胁情报分析平台
  7. python上传大文件s3_使用Python boto3上传Windows EC2实例中的文件至S3存储桶中
  8. WPF WPF布局元素
  9. Pytorch 单机多卡训练DDP
  10. 数据库安全性 --- 概述