转换后的图像不清晰。 wmf到png

我正在尝试使用c#.net将wmf图像文件转换为png格式。

但是,保存的图像不清楚,如下所示

http://sofzh.miximages.com/c%23/ header.DpiY 100)); using(Graphics g = Graphics.FromImage(bitmap)){ g.DrawImage(img, 0, 0); } bitmap.Save(test.png”, ImageFormat.Png);

我怎么能弄清楚?

.wmf文件具有非常大的DpiX / Y值。 您需要重新缩放图像,使其更适合您的显示器分辨率。 这段代码产生了一个体面的文件版本。 您可能需要调整缩放以满足您的需要,或者之后重新缩放位图:

  using (Metafile img = new Metafile(@"c:\temp\test.wmf")) { MetafileHeader header = img.GetMetafileHeader(); float scale = header.DpiX / 96f; using (Bitmap bitmap = new Bitmap((int)(scale * img.Width / header.DpiX * 100), (int)(scale * img.Height / header.DpiY * 100))) { using (Graphics g = Graphics.FromImage(bitmap)) { g.Clear(Color.White); g.ScaleTransform(scale, scale); g.DrawImage(img, 0, 0); } bitmap.Save(@"c:\temp\test.png", ImageFormat.Png); } } 

最后,我得到了一个IDEA!

那就是使用Inkspace。
众所周知,Inkscape是一个矢量图形编辑器。
今天,我发现INKSCAPE有命令行选项!! http://goo.gl/Moksf
所以,我应该做的是使用一些选项调用incape.exe,例如:

Process.Start(“inkscape.exe -f {wmf_filename} -e {png_filename_to_be_made}”);

这是转换后的png文件:http: //yfrog.com/gyu40ap
非常清楚的png图像。 这就是我想要的!

谢谢!

转换为PNG时,EMF向量可能非常奇怪(特别是在使用小格式时)。 我最终把它吹了4倍而不是把它转换成我想要的尺寸。 使用此策略时结果更好。

GDI渲染
资料来源: https : //keestalkstech.com/2016/06/rasterizing-emf-files-with-net-c/