問題タブ [wmf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows Media Format(WMF)を使用したデスクトップのキャプチャ
Windows Media Format SDKを使用して、デスクトップをリアルタイムでキャプチャし、WMVファイルに保存しています(実際、これは私のプロジェクトを単純化しすぎていますが、これは関連する部分です)。エンコードには、Windows Media Video 9 Screenコーデックを使用しています。これは、画面キャプチャに非常に効率的であり、コーデックがWindows Media Player 9ランタイムに含まれているため( Windows XP SP1)。
GDI関数を使用してBITMAPスクリーンショットを作成し、それらのBITMAPをエンコーダーにフィードしています。ご想像のとおり、GDIでスクリーンショットを撮るのは遅く、画面カーソルが取得できません。これを手動でBITMAPに追加する必要があります。私が最初に取得するBITMAPはDDBであり、エンコーダーが理解できるようにそれらをDIBに変換する必要があります(RGB入力)。これにはさらに時間がかかります。
プロファイラーを起動すると、時間の約50%がエンコーダーであるWMVCORE.DLLに費やされていることがわかります。もちろん、エンコーディングはCPUを集中的に使用するため、これは予想されることです。
重要なのは、SDKに付属しているWindows Media Encoderと呼ばれるものがあり、目的のコーデックを使用して、よりシンプルでCPUに優しい方法で画面キャプチャを実行できることです。
WMEはWMFに基づいています。これはより高いレバーライブラリであり、.NETバインディングもあります。回避しなければならない不要な依存関係が発生するため、プロジェクトで使用できません。
WMEがサンプルデータをWMVエンコーダーに供給するために使用する方法について質問しています。エンコーディングは、WMFを使用する私のアプリケーションで行われるのとまったく同じようにWMEで行われます。WMEは、ビデオデータをエンコーダーに供給するためのはるかに効率的な方法を備えているため、私のアプリケーションよりも効率的です。遅いGDI関数やDDB->DIB変換に依存しません。
それはどのように行われますか?
wpf - WPF は WMF/EMF ファイルの読み取り/書き込みをネイティブにサポートしていますか?
Windows Presentation Foundation は、WinForms Interop または Win32 を使用しなくても、WMF/EMF ファイルを読み書きできます。
そうでない場合、その理由は何ですか?
c# - C#で滑らかな画像を描く方法は?
(PictureBoxesで、Graphics.DrawImage()を使用して)C#フォームに画像を描画しようとしていますが、スムーズに描画する方法を探しています。画像は透明度をサポートする形式である必要があるため、PNG、GIF、SVG、およびWMFです。C#はSVGファイルをすぐにサポートしておらず、使用するのに適したサードパーティのライブラリが見つかりませんでした(SvgNetを見つけましたが、理解できませんでした)。
C#がImage.FromFile()関数を介して実行できるWMFファイルを描画する必要がありますが、アンチエイリアス処理されていません。これをスムーズにする方法があるかどうか疑問に思いましたか?
c# - C# でメタファイルを保存する
System.Drawing.Image に wmf または emf イメージがある場合、メタファイル データをビットマップとしてレンダリングせずに c# で保存する方法はありますか? Image.Save を呼び出すとビットマップにレンダリングされます。有効な .wmf または .emf 形式のファイルになるように、元のデータを保持したいと考えています。
printing - SHMGVW.DLL を使用してコマンド ラインから EMF (WMF) を印刷する
Windows XP / Windows Server 2003 の場合
コマンド ラインから Windows Picture and Fax Viewer (shimgvw.dll) を使用して、EMF (または WMF) ファイル形式を仮想プリンター "Microsoft XPS Document Writer" に印刷しようとしています。結果の XPS を、WMF/EMF のようにベクター形式にしたいと考えています。
WMF と EMF を除くすべての画像形式で動作します。XPS プリンターの保存ダイアログが表示されますが、保存された XPS ファイルは空です。
WMF をロードし、Windows Picture and FaxViewer の GUI から [ファイル] > [印刷] をクリックすれば実行できますが、コマンド ラインからは実行できません。また、Windows エクスプローラーで WMF ファイルを右クリックして [印刷] をクリックしても、選択した WMF ファイルを印刷できません (リストから WMF ファイルと EMF ファイルを除外します)。
コード:
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = @"C:\WINDOWS\System32\rundll32.exe";
info.Arguments = @"C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt ""c:\vectorImage.emf"" ""Microsoft XPS Document Writer""";
Process.Start(info);
しばらく前に WMF エクスプロイトについてよく読んだことがありますが、これらのファイルの直接印刷が削除されたとしか思えませんか? しかし、これらの WMF ファイルを GUI から印刷できたとしても、どのようにして悪用を回避したのかわかりません。
私がやりたいことは、ユーザーの操作を必要とせずに、プログラムで WMF/EMF ファイルから XPS ベクター ファイルを作成することです。関連するすべての形式がマイクロソフトに属しているため、これを行うことができるはずだと思います。
.net - 信頼性の高い.wmf/wmfからピクセルベースの画像変換
こんにちは、
透明な領域を含む.wmfファイルの.netの内部(System.Drawing)ベースのMetaFile/画像処理に少し問題があります。基本的に、MetaFile.LoadFile(...)を実行し、それをtiff / pngなどとして保存するときはいつでも、そのソースファイルの一部の領域が欠落しています。実際に特定することはできませんが、メタファイル内のベクターベースの情報は問題なく機能しているようですが、ピクセルベースの領域(.wmf内に配置された画像など)が欠落しています。
信頼できる.netネイティブでサードパーティ以外の方法でwmfファイルを適切に変換する方法を知っている人はいますか(最終的なピクセルベースの画像は.wmf ..ちょうど..よく..ピクセル化されているように見えます)?
乾杯と感謝、-J
perl - Windows で Perl を使用して WMF 画像を PNG または JPG に変換するにはどうすればよいですか?
ひょっとして、WMF 画像を PNG または JPEG 形式に変換できる Perl モジュールを知っている人はいますか? CPAN を検索しましたが、何も見つかりませんでした。
インストールの制限により、Perl モジュールであり、Windows で動作する必要があります。
c# - C# - カスタム データ ストリームで ASF をエンコードする
ASF ファイルを作成しようとしていますが、サウンドまたはビデオ データを使用する代わりに、バイナリ データを含むカスタム パケットで構成されるストリームを作成したいと考えています。
誰かがいくつかのコード例を提供できますか: 1) プロファイルの設定。2) カスタム ストリームの構成 3) カスタム パケットのストリームへの挿入。
とても有難い。ありがとう!
ありがとうロイ
c# - WMF / EMF ファイル形式変換 C#
私のプログラムでは、Windows メタファイル (WMF および EMF) を「再生」または「解析」する必要があります。私は MSDN と Google を掘り下げましたが、最も近いのは Graphics です。EnumerateMetafile メソッド。EnumerateMetafileProc コールバックが呼び出されてから、PlayRecord を呼び出すことができるので、これを機能させることができます。欠けているのは、そのコールバックから有用なデータを取得する方法です。
私が見た例: http://msdn.microsoft.com/en-us/library/ms142060.aspx
コールバックには、ENUM である recordType パラメータがあります。データを有用な型にキャストする方法がないように見えることを除けば、これは便利に見えます。
私の目標は、WMF/EMF の作成を再生して、(DrawLine、DrawPoint、DrawArc) のようなメソッドを持つ特殊なグラフィックス クラスを関数呼び出しできるようにすることです。ある意味では、WMF/EMF 図面をまったく別の形式で再作成しています (変換)。
これに関するヘルプは非常に高く評価されています。