8

System.Drawing.Imaging 名前空間のドキュメントを引用するには

Encoder クラスを使用すると、GDI+ を拡張して任意の画像形式をサポートできます。

それでも、独自のカスタム ファイル形式を実装する方法を説明するドキュメント、例、またはその他のものが見つかりません。ほとんどの検索では、EncoderParameters の受け渡しに関する多くの情報が返されますが、独自のエンコーダの実装に関する情報は何も返されません。

理想的には、これを C# で実装できるようにしたいと思っていますが、必要に応じて ATL を削除する準備ができています :)

誰かがドキュメントに出くわしたり、これにアプローチする方法についての指針を提供したりできますか?

更新:
おそらく、これまでに試したことが役に立たなかったことに言及する必要があります:

  • ImageCodecInfoクラスで返された GUID を探して、それが通常の COM インターフェイスであるかどうかを確認します (ただし、そうではないようです)。意図は、実装されたインターフェイスを確認すること、またはそれが単なるレジストリ エントリであるかどうかを確認することです。
  • Image.FromFileメソッドにステップインして、gdiplus.dll の単なるラッパーであることを確認しました
  • 独自の ImageEncoderParamers を指定して既存のものを使用する多くのケースを提供しているように見える多くの Google 検索。また、他の方法で独自の コーデックを実装する人々のいくつかのケース.
  • ニュースでも尋ねられました://microsoft.public.win32.programmer.gdi
4

1 に答える 1

9

さて、これが私がなんとか掘り起こした情報です。あなたが望むことを行うための (Microsoft による) 推奨される方法は、フォーマット用の WIC 対応コーデックを開発することです。Windows Imaging Component (WIC) API は Vista に組み込まれていますが、XP および Win Server 2003 でも .NET 3 内または個別のダウンロードとして利用できます。

ただし、GDI+ コーデック リストを拡張する別の方法も存在するようですが、それらの水域はかなり暗いものです。gdiplus.dll を Hex エディターで開くと、次のレジストリ キーへの参照が見つかります。

Software\Microsoft\Imaging\Codecs

そのキーをグーグルで検索すると、Windows CE および Windows Mobile プラットフォームで独自のイメージ コーデックを登録する方法について説明しているMSDN の記事が表示されます。面白いことに、XP の gdiplus.dll には、前述のレジストリ キーがハードコードされています。ただし、それが使用されているかどうかは確認していません。また、WIC または GDI+ 用に独自のコーデックを開発しようとはしていません。

この情報が、少なくとも始めるのに役立つことを願っています。

于 2009-01-28T00:36:11.373 に答える