• ベストアンサー

C言語でBMP画像(ファイル)は作れますか?(Unix使用)

こんにちは。私は30代男性です。 先日はBMPを読み込んでUnix上でイメージ表示するプログラムを作ろうとしていましたが、ようやく完成しました。ご協力いただいた方々にお礼申し上げます。 次にチャレンジしようとしていることは、「BMPファイルに画像を書き出す。」というものです。画像は横4ピクセル・高さ256ピクセルのサイズで、とりあえず1行ずつRBG値を増やして「色の作成」の時に出てくるような長方形型の色指定用のグラデーション表示をしてみようかなと思っています。 →つまり、色の変化はRBG(0,0,0,)からRBG(255,255,255)にずらしていくという感じです(黒→灰色→白とでもいいましょうか)。 これはパレットに設定する値をfor分でループさせればいいかなと思いましたが、プログラムでBMP画像を作り出すことは無理なんでしょうか?ファイルがない状態からファイル名を指定して作るとしたら、offset値をどのように設定したらいいのかなど、わからないことだらけです。 アドバイスを頂けたらありがたいです。どうぞ宜しくお願い致します。

質問者が選んだベストアンサー

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

★表示するプログラムが完成したようですね。 ・『黒→灰色→白』という色のグラデーションを『グレイスケール』と呼びます。 ・プログラムでも BMP 画像ファイルを作り出すことは出来ます。  今回はパレットを使いますし、256 段の変化ですので 256 色のビットマップになります。  ヘッダ情報を順番に fwrite で出力して、パレットデータ(RGBQUAD×256個の配列)を出力します。  この後に画像データの下位ラインから順に横 4 ピクセル× 256 ラインを出力します。 ・なお、今回は 1 ピクセルは 1 バイトですので 4 ピクセル× 256 ライン=1024バイトが画像データの  サイズになりますね。→ヘッダ情報にもこの情報をセットします。 ・以上。おわり。→前回(下)の『参考URL』もどうぞ。

参考URL:
http://www5d.biglobe.ne.jp/~noocyte/Programming/Windows/BmpFileFormat.html
DT50
質問者

お礼

Oh-orange様 いつもご回答頂き、ありがとうございます。 こちらも完成させることができました。「表示」の時よりもずいぶん簡単でした。 また何かありましたら、アドバイスを宜しくお願い致します。

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

ファイルフォーマットが分かればBMPでも何でも作れますよ fopen( )して適切なヘッダを出力後、画像データを順次書き込めばよいでしょう。 BMPファイルフォーマットに関しては参考URLに詳しく書いてあります。 確かBMPは画像の下から書き込むんだったかな。

参考URL:
http://www.kk.iij4u.or.jp/~kondo/bmp/
DT50
質問者

お礼

早速のご回答ありがとうございます! アドバイスを参考に作ってみます。ありがとうございました。

関連するQ&A