可靠的.wmf / wmf到基于像素的图像转换

时间:2009-04-24 13:25:23

标签: .net image system.drawing metafile wmf

下午好,

我在.net的内部(System.Drawing)基于MetaFile /图像处理的.wmf文件中遇到了一些问题,这些文件包含透明区域。基本上每当我做MetaFile.LoadFile(...)并将其保存为tiff / png等时,该源文件的某些区域就会丢失。我无法确定它,但它 - 似乎 - 就像图元文件中基于矢量的信息工作正常,但是基于像素的区域(例如放在.wmf中的图像)丢失了。

有没有人知道一个可靠的.net原生和非第三方方式来正确转换wmf文件(如...最终基于像素的图像看起来像.wmf ..只是..好......像素化)?< / p>

干杯谢谢, -J

2 个答案:

答案 0 :(得分:0)

问题是.NET是GDI +,而WMF / EMF是GDI。重要的是要知道GDI +与GDI不兼容,它们具有完全不同的API和功能。因此,GDI元文件中的某些操作表现不如预期。透明位图,以及元文件等的世界变换通常不像微软宣传的那样真正起作用。

我到目前为止所做的最好的事情是将元文件转换为本机GDI +,这需要模拟GDI堆栈并应用一些主要的调整来获得正确的文本定位等。

看看EMFExplorer,发现的信息可能会有很大帮助。 http://www.codeproject.com/KB/GDI-plus/emfexplorer.aspx

答案 1 :(得分:0)

好吧,将metafiles(.wmf / .emf)转换为另一种格式的最可靠的方法是使用.png作为输出格式,因为msdn描述中的某个元文件无论如何都在内部处理/转换为png格式(与alpha等)和例如默认情况下,Metafile.Save(“somewher”...)将在png ImageFormat中输出。

因此,如果你想要从一个元文件输入中创建一个非png图像,如果你付出额外的努力,转换&amp;将它存储为png,然后将该png重新转换为最终格式。有点蹩脚,但又一次..无论如何,wmf本身很奇怪,而且我(我个人的)结论是邪恶的。 ;)

-J