Надежное преобразование изображений .wmf / wmf в Pixel - PullRequest
0 голосов
/ 24 апреля 2009

Добрый день,

У меня возникли небольшие проблемы с внутренней обработкой .net (System.Drawing) MetaFile / Image на основе файлов .wmf, содержащих прозрачные области. В основном всякий раз, когда я делаю MetaFile.LoadFile (...) и принимаю это, чтобы сохранить его как TIFF / PNG и т. Д., Некоторые области этих исходных файлов отсутствуют. Я не могу точно определить это, но, похоже, что векторная информация в метафайле работает нормально, но пиксельные области (например, изображение, помещенное в .wmf) отсутствуют.

Кто-нибудь знает надежный, .net собственный и не сторонний способ для правильного преобразования файлов wmf (как в ... окончательном пиксельном изображении выглядит как .wmf ... просто ... хорошо ... в пикселях)? 1005 *

Приветствия и спасибо, -J

Ответы [ 2 ]

0 голосов
/ 28 апреля 2009

Хорошо, очевидно, наиболее надежный способ преобразования метафайлов (.wmf / .emf) в другой формат - это использование .png в качестве выходного формата, поскольку где-то в метафайлах описания msdn внутренне обрабатываются / преобразуются в формат png в любом случае ( с альфа и т. д.) и, например, Metafile.Save ("somewher" ...) по умолчанию будет выводиться в png ImageFormat.

Таким образом, если вы хотите создать не-PNG-изображение из метафайла, вы получите лучший результат, если пройдете лишнюю милю, преобразуете и сохраняете его в виде PNG, берете этот PNG и преобразуете это в вашем окончательном формате. В некотором смысле, хромой, но опять же ... сам по себе wmf странный, и я пришел к (моему личному) выводу, что это зло. ;)

-J

0 голосов
/ 24 апреля 2009

Проблема в том, что .NET - это GDI +, а WMF / EMF - это GDI. Важно знать, что GDI + не совместим с GDI, у них совершенно разные API и возможности. Поэтому некоторые операции в метафайлах GDI ведут себя не так, как ожидалось. Прозрачные растровые изображения, а также преобразования мира в метафайлах и т. Д. Часто не работают так, как рекламирует Microsoft.

Лучшее, что я получил на данный момент, - это преобразование метафайла в собственный GDI +, для чего требуется эмуляция стека GDI и применение некоторых основных настроек для правильного позиционирования текста и т. Д.

Посмотрите на EMFExplorer, найденная там информация может сильно помочь. http://www.codeproject.com/KB/GDI-plus/emfexplorer.aspx

...