リソースに、DDS形式の画像を挿入したのですが、これのファイルサイズを
取得する方法はありませんでしょうか?
どなたか知っていらっしゃいましたら、ご教授下さい。
Visual C++ 2003.Netを使用しています。
画像としての大きさ(高さ/横幅)ではなく、リソースのサイズであれば
SizeofResource
で取得できませんか?
早々のご返事をありがとうございます。
申し訳ありません。質問が至りませんでした。
幅と高さの取得です。
「リソースに挿入したDDS画像の、幅と高さを取得するには?」
で、改めてよろしくお願い致します。
サーフェイス フォーマット ヘッダー
の
dwHeight、dwWidth
を見ればよさそうな気がする。
つまり、マジック値分スキップして、DDSURFACEDESC2 構造体にmemcpyして
dwHeight,dwWidthを参照でいけそう。
(私はDDS形式のファイルを持っていないので試せないです。)
HPにて記述を読んで参りました。
一度、この方法で試させて頂きます。
Blue様、ご親切にありがとうございました。
確認後、改めて解決の報告と共に、お礼申し上げますね。
できました!
HANDLE hRDDS = LoadResource(NULL, FindResource(NULL, DDS_ID, R_GROUP));
char *pBuffer = (char*)LockResource(hRDDS);
pBuffer = pBuffer + sizeof(DWORD);
DDSURFACEDESC2 dds_info;
memcpy(&dds_info, pBuffer, sizeof(DDSURFACEDESC2));
上記内容で、DDSファイルの幅と高さを取得できました。
Blue様、本当にご親切にありがとうございました。
お答え下さらなければ、未だに悩んでいるところでした。
心より感謝致します。
またお世話になることもあるかもしれませんが、
そのときはどうぞよろしくお願い致します。
よく考えてみれば、memcpyしなくてもキャストすればできましたね。
DDSURFACEDESC2* pdds_info;
pdds_info = (DDSURFACEDESC2*)pBuffer;
DWORD h = pdds_info->dwHeight;
DWORD w = pdds_info->dwWidth;
追加情報を書き込んで下さっていたのですね。
すみません。お礼が遅れてしまいました。
解決後まで、ご親切にありがとうございます。
Blueさんのやり方で、もう一度試みてみます。
本当にありがとうございました。
ツイート | ![]() |