- ベストアンサー
画像(bmp等)の保存形式について
画像(bmp等)の保存形式について 画像の保存のフォーマットについて質問です。 bmpの形式についてのwebページをみてみたんですが、 structを書いてメンバをかいていたりするんですが、 bmpのファイルをテキストエディタでみてみてもうまくみれないし、 やっぱりバイナリエディタでみると数字の羅列なんですが、 実際に作る場合にはstructとかを書いた後に使うコンパイラみたいなものがあるんでしょうか? struct等C言語のプログラミングの知識はあります。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 実際に作る場合にはstructとかを書いた後に使うコンパイラみたいなものがあるんでしょうか? "struct"の文字列なんかは書きませんが、書式、構造体、フォーマットに従った形式でデータ書き込みすればbmpファイルになります。 コンパイラ的なものは無いです。 > bmpのファイルをテキストエディタでみてみてもうまくみれないし、 テキストエディタでは、ASCII文字以外のコードを入力するのは難しいですから、特殊なエディタや特定のフォーマットとかで無い限り、難しいと思います。 メモ帳で入力する事を考えると、 BMPFILEHEADER 最初の2文字の"BM"はいいですが、 次の4バイトのファイルサイズは、入力可能な文字コードで一番若い空白(0x20)4文字入れたとしても、20202020で、538メガバイトのファイルからしか作れません。 その次の予約領域に0x00を入力する事もできません。(適当な表示ソフトなら、予約領域の内容はチェックせずに表示してくれるかも知れませんが…) …この辺で詰まります。 バイナリエディタを使うのが一般的です。 Stirlingとかなら、BMPのファイルを構造体のイメージで編集するとかの機能があります。 例えば、Excelでデータ作成、VBAでバイナリデータを書き出しとかでBMPファイル作成なんかは可能です。
その他の回答 (1)
- moko3syzygy
- ベストアンサー率66% (2/3)
>実際に作る場合 ビットマップ画像ファイルは情報を含むヘッダ部とデータ(画像ビット部) に分かれていますが、私が実験結果をビットマップで保存するときに書いた C言語のプログラムでは、 (1)ヘッダ:BMPINFOの structを宣言、mainでおのおののフィールドの値を設定する (2)画像ビット部:別途ファイルで保存しておいたファイルをopenしてファイルストリームを読み出す の主に2パーツをつくり、1,2の順に連続して十分な長さのバッファに memcpy() したものをfwrite()を使って書き出しました。 既存ファイルをバイナリエディタで開けるというのなら、16進数でどこまでが どのフィールドでどんな値をとっているか見てみる、RGB各フィールドのバイ ト数x3+ヘッダがそのファイルサイズになっているかを検算してみる、など で理解が深まるのではないでしょうか。
お礼
回答ありがとうございます! structを使ってた意味がわかりました。 いろいろ試してみます!
お礼
回答ありがとうございます! 丁寧に説明してくださって感謝です! Stirlingを試してみたいと思います