C#实现格式转换:wmf转png

作者在项目中需要从Word文档中提取数学公式为图片,发现WMF格式的矢量图。通过C#编程,利用Bitmap类成功实现了WMF到PNG的转换,并进行了批量处理,解决了图片模糊和尺寸问题,最终得到清晰的图片。
摘要由CSDN通过智能技术生成

我最近做一个项目,其中有个步骤是将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像素

并且可以完成批量转换

现在图片就清晰多啦

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值