電子書籍の厳選無料作品が豊富!

FORTRAN でBMP画像の値の取得をしたいのですが,どうすればいいでしょう?

たとえば,10×10画素の8bitのbmp画像の各ピクセルの値を読んで,テキストに書き出したいとします.

ですので,できるファイルは・・
1,1,255
1,2,255



みたいに,X座標,Y座標,そこの値 っていうふうにしたいんです.
わからないのは,BMP画像の値の取得方法です.


また,bmpを読み込んで,その情報を元にまたbmpを作る時はどうすればいいでしょう?


長々とすいません.

A 回答 (2件)

以下,FORTRAN とは無関係? な話です。


例えば,

白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白

という 10×10 の8bitBMPをフォトショップで作り保存し,
16ビットバイナリエディタで開いてみました。
データは以下のようでした。

42 4D F0 00 00 00 00 00 00 00 76 00 00 00 28 00 00 00 0A 00 00 00 0A 00 00 00 01 00 08 00 00 00 00 00 7A 00 00 00 12 0B 00 00 12 0B 00 00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0 C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 00 00

↑これはWindowsフォーマット用の8bitBMPファイルです。
こんな感じの画像をいくつか作り,バイナリエディタで開くと以下のようにわかります。


---ヘッダ部---
42 4D F0 00 00 00 00 00 00 00 76 00 00 00 28 00 00 00 0A 00 00 00 0A 00 00 00 01 00 08 00 00 00 00 00 7A 00 00 00 12 0B 00 00 12 0B 00 00 10 00 00 00 10 00 00 00 00 00 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0 C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00
---データ部---
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
---フッタ部---
00 00

OS/2 用にBMPを保存すると,ヘッダ部分が変わるだけで,データ部とフッタは変わらないようでした。

次に,
黒白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白

というBMPを作り,バイナリエディタで開くと,

0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
00 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 ←この行の1が 00。
00 00

次に,
黒黒白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白


0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
00 00 0F 0F 0F 0F 0F 0F 0F 0F 00 00 ←1と2が 00。
00 00

次に,
黒黒白白白白白白白白
黒白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白
白白白白白白白白白白

0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00
00 0F 0F 0F 0F 0F 0F 0F 0F 0F 00 00 ←1が 00。
00 00 0F 0F 0F 0F 0F 0F 0F 0F 00 00 ←1と2が 00。
00 00

と言う風なことがわかります。

>> X座標,Y座標,そこの値 っていうふうにしたいんです.

FORTRANの方法はわかりませんが,
データを後から読んでいって,
フッタと改行を削除すれば,X座標Y座標はわかります。
なぜか上下がひっくり返っているようです。

>> その情報を元にまたbmpを作る時はどうすればいいでしょう?

これまたFORTRANの方法はわかりませんが,
バイナリエディタで保存すれば,BMPが保存されます。

全然参考にならない回答かもしれませんが,解析結果です。
バイナリエディタには「Stirling(スターリング)」↓を使わせていただきました。

参考URL:http://www.vector.co.jp/soft/win95/util/se079072 …
    • good
    • 0

OSは何? なんでFORTRANでやるの? 端的に言ってFORTRANでやる作業に思えないし、ビットマップ画像のフォーマットも色々と合ったと思うので、そもそも環境が分からないと適切な回答もできないと思いますけど。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!