我最近做一个项目,其中有个步骤是将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像素
并且可以完成批量转换
现在图片就清晰多啦