• 締切済み

ビットマップファイルを1つのファイルにする方法

ビットマップがDATやDLLで1つにまとめられているものをよく見掛けるのですが、あれはどのような方法でやるのでしょうか? どなたか教えて下さい。

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・『DLL』の場合はビットマップデータのみのリソースを単純に DLL 化しているだけ。 ・『DAT』の場合は多分、独自にビットマップデータをアーカイブ(まとめる)しているのでは。  『DAT』はソフトによって『データ』ならその拡張子をつけますので独自に1つに  まとめているだけだと思います。 ・イメージ的には  総ヘッダ情報(ビットマップデータの個数など)  サブヘッダ情報(ファイル名、ファイルサイズなど)、1つ目のビットマップデータ  サブヘッダ情報(ファイル名、ファイルサイズなど)、2つ目のビットマップデータ  サブヘッダ情報(ファイル名、ファイルサイズなど)、3つ目のビットマップデータ   :  サブヘッダ情報(ファイル名、ファイルサイズなど)、n個目のビットマップデータ  とこんな感じで1つのデータファイルに出来ます。 ・DLL 化すればリソースを読み込む関数群(LoadBitmp、LoadImage)などで簡単に利用できます。  独自のデータファイルでパックした場合は、  (1)総ヘッダ情報より、ビットマップデータの個数などを取得  (2)サブヘッダ情報より、ビットマップデータのファイル名を頼りに Bitmap 形式を読み込む  (3)指定のファイル名が見つからないとき、NULL を返す。  ※こんな感じの独自関数群を用意します。 作り方: typedef struct bmpdata_t {  char filename[ MAX_PATH ]; ←bmpファイル名  long size; ←bmpのサイズか、ファイルサイズなど  long x; ←bmpの横幅  long y; ←bmpの高さ } bmpdata_t; bmpdata_t bmp; long lCount = 10; ←10個 fwrite( &lCount, sizeof(long), 1, fp ); ←総ヘッダ情報の出力 strcpy( bmp.filename, "Sample1.bmp" ); bmp.size = ファイルサイズなど; bmp.x = xxxx; bmp.y = yyyy; fwrite( &bmp, sizeof(bmpdata_t), 1, fp ); ←サブヘッダ情報の出力(No.1) MyFileCopy( bmp.filename, fp ); strcpy( bmp.filename, "Sample2.bmp" ); bmp.size = ファイルサイズなど; bmp.x = xxxx; bmp.y = yyyy; fwrite( &bmp, sizeof(bmpdata_t), 1, fp ); ←サブヘッダ情報の出力(No.2) MyFileCopy( bmp.filename, fp );  : strcpy( bmp.filename, "Sample10.bmp" ); bmp.size = ファイルサイズなど; bmp.x = xxxx; bmp.y = yyyy; fwrite( &bmp, sizeof(bmpdata_t), 1, fp ); ←サブヘッダ情報の出力(No.10) MyFileCopy( bmp.filename, fp ); その他: ・上記の簡単なプログラムで複数のビットマップデータ(ファイル)を1つにパックできると思います。  bmpdata_t 構造体を独自に定義しておきます。  今回は説明の都合上、ファイル名、サイズ、横幅、高さの4つをサブヘッダ情報としています。  必要ならば他の要素を増やしたりして下さい。 ・あと MyFileCopy() 関数は指定のファイル名を fp のファイルに単純にコピーする自作関数です。  ファイル名を fopen して単純に fgetc → fputc などでコピーすればよい。あるいは fread、fwrite で。 ・読み込むときは最初にサブヘッダ情報の数を long 型で取得します。  その後、サブヘッダ情報の bmpdata_t 構造体を読み込み、ファイル名、サイズから1つずつ  Bitmap 形式のファイルを読み込んでいく。読み込む関数は当然、独自に作成することとなる。 ・以上。おわり。

関連するQ&A

  • ビットマップのファイルが見れません。

    XPですが、ビットマップ(写真画像)のファイルが見れません。

  • psdファイルとビットマップファイル

    psdファイルとビットマップファイルって同じものですか? 私が、psdファイルといったら、「あービットマップね」といわれ、そうだっけ?と思いました。そいつは「psdファイル=ビットマップファイル」といっていますが。同じもの、もしくは一緒のようなものなんですか?

  • ビットマップの画像ファイルの型式を調べるには?

    ビットマップの画像ファイルがありまして、 そのビットマップが256色なのか、24ビットなのか、モノクロ(白黒)形式なのかなど、 正確に調べる良い方法ってございませんでしょうか? どうぞ、ご教授よろしくお願いしますm(_ _)m

  • ワードのファイルをビットマップで読み出すには

     ワードの画面にビットマップ(絵や写真)を貼り付けることは出来ますが、逆にビットマップの画面に、ワードで保存してあるファイルを呼び出そうとすると、「このファイルは読み取れません」と言うエラーメッセージが出て、呼び出せません  仕方がないので、ワードで作成した書類は、印刷して、スキャナーで読み取りビットマップに取り込んでいます。 その他に方法がありましたら教えて下さい。

  • ビットマップファイルの消失

    動画の背景を作るためにビットマップファイルを初めて使おうとしたのですが、右クリック→新規作成といってあるはずの新規ビットマップファイルがありません。 助けて下さい!

  • ビットマップ

    ビットマップで保存してある画像は、なんのためにあんなに容量デカイんですか?たしかに画質はいいと思いますが、JPEGやPNGと大して変わらないような・・・?従兄弟は「ビットマップなんか加工するときぐらいしか使わねぇよ」って言ってましたがどういうなんですか?ビットマップイメージの利点・欠点を教えてください。

  • ”ビットマップ”って何ですか?

    派遣先で「ビットマップをワードに貼りつけてチラシを作りたい」と言われました。 派遣先は不動産会社でして”間取り”なんかを作る専用ソフトで作った間取り(ビットマップ)をワードにもってきてチラシを作りたいといってます。 教えてください!! まず、ペイントで絵を描いて保存すると拡張子は「bmp」ですが、デジカメでとったデータには「JPG」がつきますよね。 どう違うのでしょうか? それと、ピットマップをワードに”もってくる”方法は例えばどういう方法がありますか?何通りか教えてください。

  • ビットマップファイルの印刷方法 !!!

    環境はWIN2000 VC++6.0 MFCです。 ビットマップを印刷しようとしたら非常に難しくどうしても出来ませんでした。 お決まりのパターンのコードがあっても良さそうなのにいくら探しても見つかりません。 どうかおねがいします。

  • ビットマップとビットマップデータについて教えてください

    どこのカテゴリに書き込んでいいのか分からなかったのですが、質問させていただきます。課題で「解像度」について調べています。解像度の基礎を固める上で、ビットマップとビットマップデータの違いが分からず、いろいろとサイトを見ているのですが、恥ずかしい話ですが解説が難しく、理解ができません。 また「アスキー用語辞典」で「ビットマップ」と検索すると2つ出てきます。それぞれ、説明が違うため、どう区別していいのか分かりません。また、タイトルにあります通り、「ビットマップ」と「ビットマップデータ」の違いもいまいち理解できません。どうか、馬鹿な私にも理解できるよう、知識とアドバイスをください。よろしくお願いします。(またこのほかにも分からない事がありましたら書き込みさせていただくかもしれませんが…)ちなみにMacのG5を使用していますので、Macベースに教えていただけたら幸いです。

  • ビットマップファイル拡大したい

    ビットマップファイル「250×250pix」のファイルを、縦横倍にして「500×500pix」の画像にしたいのですが、自動的に変換する方法はありますでしょうか? 1ドットが4ドットになって、色はそのまま単純な拡大画像がほしいのですが・・・。 ペイントは使えるのかなぁ・・・初心者ですが、どうか教えて下さい。