- ベストアンサー
C言語でBMP画像(ファイル)は作れますか?(Unix使用)
こんにちは。私は30代男性です。 先日はBMPを読み込んでUnix上でイメージ表示するプログラムを作ろうとしていましたが、ようやく完成しました。ご協力いただいた方々にお礼申し上げます。 次にチャレンジしようとしていることは、「BMPファイルに画像を書き出す。」というものです。画像は横4ピクセル・高さ256ピクセルのサイズで、とりあえず1行ずつRBG値を増やして「色の作成」の時に出てくるような長方形型の色指定用のグラデーション表示をしてみようかなと思っています。 →つまり、色の変化はRBG(0,0,0,)からRBG(255,255,255)にずらしていくという感じです(黒→灰色→白とでもいいましょうか)。 これはパレットに設定する値をfor分でループさせればいいかなと思いましたが、プログラムでBMP画像を作り出すことは無理なんでしょうか?ファイルがない状態からファイル名を指定して作るとしたら、offset値をどのように設定したらいいのかなど、わからないことだらけです。 アドバイスを頂けたらありがたいです。どうぞ宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
★表示するプログラムが完成したようですね。 ・『黒→灰色→白』という色のグラデーションを『グレイスケール』と呼びます。 ・プログラムでも BMP 画像ファイルを作り出すことは出来ます。 今回はパレットを使いますし、256 段の変化ですので 256 色のビットマップになります。 ヘッダ情報を順番に fwrite で出力して、パレットデータ(RGBQUAD×256個の配列)を出力します。 この後に画像データの下位ラインから順に横 4 ピクセル× 256 ラインを出力します。 ・なお、今回は 1 ピクセルは 1 バイトですので 4 ピクセル× 256 ライン=1024バイトが画像データの サイズになりますね。→ヘッダ情報にもこの情報をセットします。 ・以上。おわり。→前回(下)の『参考URL』もどうぞ。
その他の回答 (1)
- php504
- ベストアンサー率42% (926/2160)
ファイルフォーマットが分かればBMPでも何でも作れますよ fopen( )して適切なヘッダを出力後、画像データを順次書き込めばよいでしょう。 BMPファイルフォーマットに関しては参考URLに詳しく書いてあります。 確かBMPは画像の下から書き込むんだったかな。
お礼
早速のご回答ありがとうございます! アドバイスを参考に作ってみます。ありがとうございました。
お礼
Oh-orange様 いつもご回答頂き、ありがとうございます。 こちらも完成させることができました。「表示」の時よりもずいぶん簡単でした。 また何かありましたら、アドバイスを宜しくお願い致します。