メタファイル(*.WMF)のRGB情報は、どのに?


take  2004-07-14 23:44:01  No: 53977

Placeable metafile format のファイルを扱おうとしています。
具体的には、単色の画像の色を変更したいのですが、RGBの情報へ
どのようにたどって行けば良いのか解からず困っています。

いちおう既に話題になった下記は、参考にしています。
ヘッダー情報が22バイトあることは理解できました。

◆バイナリデータがメタファイルであると判断するには
http://madia.world.coocan.jp/vc/vc_bbs/200307_03070037.html

typedef struct _PlaceableMetaHeader
{
  DWORD Key;           /* Magic number (always 9AC6CDD7h) */
  WORD  Handle;        /* Metafile HANDLE number (always 0) */
  SHORT Left;          /* Left coordinate in metafile units */
  SHORT Top;           /* Top coordinate in metafile units */
  SHORT Right;         /* Right coordinate in metafile units */
  SHORT Bottom;        /* Bottom coordinate in metafile units */
  WORD  Inch;          /* Number of metafile units per inch */
  DWORD Reserved;      /* Reserved (always 0) */
  WORD  Checksum;      /* Checksum value for previous 10 WORDs */
} PLACEABLEMETAHEADER;


REE  2004-07-15 01:01:46  No: 53978

>いちおう既に話題になった下記は、参考にしています。

とのことですが、

>http://www.wotsit.org/
>で「WMF」を検索すると表示される
>「Windows Metafile Format WMF/EMF/APM (html)」
>というものが参考になるかと思います。

この中にかなり詳しいことが書いてあると思いますが、それでは不足だったのでしょうか?


シャノン  2004-07-15 01:02:16  No: 53979

メタファイルってのはベクタ形式じゃありませんでしたっけ?
だとしたら RGB 情報は持っていないと思われます。


シャノン  2004-07-15 01:53:32  No: 53980

訂正:
どこかに持っているんでしょうが、BMP のようなピクセルの塊ではありません。
あるドットを特定するというのは難しいような気がします。


take  2004-07-15 01:58:13  No: 53981

REE 様、シャノン様

返信ありがとうございます。
お恥ずかしい話ですが、英語の読解力不足もあってよく理解できなかったのです。

既存のWMFファイル(同一絵柄で色が違うもの)をバイナリエディタで
比較してみたところ、RGB情報の場所を見つけました。

しかしWMFファイルは、固定長のヘッダーレコード以降のGDI命令レコードは、
可変長であるらしくRGB情報は、決めうちでココという訳にはいかないようです。


REE  2004-07-15 03:02:14  No: 53982

全てのレコードを操作して、色に関わるレコードだけ、色の部分を変更することになるでしょうね。
幸いレコード毎に長さを持っているようですので、スキップするのは容易だと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加