No.2ベストアンサー
- 回答日時:
PPM/PGM形式は決まったヘッダーとそれに応じた画像をそのまま書き出せば良いので、他の画像形式に比べて簡単ですね。
<PPMバイナリー形式例>
P6 <--- ppmバイナリーを表す
# sample.ppm
237 366
255
.....バイナリー画像データが続く
・1行目はマジックナンバー(識別子)である.
1行目に"P6"とあればppm(Binary)形式であることを示している.
・2行目はコメント文である.コメント文の前には"#"がついている.
・3行目は画像のサイズ(dot)であり,width, heightの順で記述されている.
・4行目は最大の色調値を表す.P6の場合は普通255と決められている.
・5行目以降は実際の画像データが記述されている.
各ピクセル値(int)を RGB の順にBinary形式で記述されている.
つまり画像データ部分は次のようなイメージで表されている.
231 228 218 215 226 282 …
つまり,RGBRGBR…表すように並んでいる.
<バイナリー出力>
形式的には、上記のように簡単なので「Cでどの様にバイナリーファイル出力するか?」が問題のようですね。
ファイルの出力にはfopen/fprint/putc/fwrite などを使用しますのでその辺の使い方を良く調べれば。。と思います。
http://www9.plala.or.jp/sgwr-t/c/sec17.html
注意点は、Windowsでfopenする場合、通常はアスキーモードなので勝手に"\n"が挿入されたりしますのでとんでもないことになりますので、バイナリーモードでfopenしてください。
バイナリーモード例)
File *fp = fopen("test.ppm","wb") ;
(PS)
ppmのフォーマットはASCIIでもバイナリーでも選択できますので、バイナリー出力が不安ならばASCII出力でも良いと思います。ASCII形式ならデータも読みやすいので、最初はお薦めです(近頃のPCならASCIIでもバイナリーでも表示スピードは大して変わらないと思います)
参考URL:http://www.mm2d.net/c/c-10.shtml
ご回答有難うございます。
お察しの通り、PPM形式は非常に簡単ですが、どの様にバイナリファイル出力するかが分かりませんでした。ファイル入出力については自分で勉強するしかありませんね。
No.1
- 回答日時:
ppm/pgm のファイル形式がわかっているならバイナリとして書き出すだけです。
fopen("test.ppm","wb")
のようにオープンして
unsigned char でバイトを書き出すような感じでいいと思います。
早速の回答有難うございます。
ただ、案の定よく分かりません。もちろんこれはファイル入出力等を勉強していない自分が悪いのでBLUEPIXY様のせいではありません。実際には画像を作るのはCの勉強がもう少し進んでからにしようと思ってますが、使用している入門書にppmに関する記述が無く、ネットで検索しても実際にバイナリのppmの画像を作っているCのソースがあまり見当たらなかったので、これからどうやって勉強しようかな~と思い質問させて頂きました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
AccessVBA複数レポート条件毎に...
-
VC++でUTF-8のファイルを出力し...
-
Acccess レポートをグループ別...
-
C言語でプログラムを作成しなさ...
-
特定の列・行をテキストファイ...
-
100行単位のエクセルデータをテ...
-
I/Oエラー(Delphi)
-
windowsでテキストファイルの比...
-
VisualC++で外部プロジェクトの...
-
Excel のページを Jpegファイル...
-
スレッドセーフでないAPIをマル...
-
どんなプログラムを書いても指...
-
バッファとは何ですか
-
Access クエリ実行が急に非常に...
-
FTPでputすると空ファイルが出...
-
フルパスから最後のディレクト...
-
OLE又はDDEを使うVISUAL BESIC...
-
C言語初心者の質問失礼します。
-
VB.NETで他のプロジェクトで作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ExcelVBA】UTF-8(BOM無)でC...
-
コマンド(例えばls)の出力結果...
-
Acccess レポートをグループ別...
-
ファイル出力の場所を指定
-
VC++でUTF-8のファイルを出力し...
-
ファイルの文字コードをUTF-8に...
-
CreateProcess関数と実行後の戻...
-
VBA でメモ帳へ保存する際の保...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
外国語とCSVについて
-
ファイル形式またはファイル拡...
-
AccessVBA複数レポート条件毎に...
-
printfだと出力されるのにfprin...
-
1行ずつではなくまとめてファイ...
-
pcap形式データをテキストへ抽出
-
C言語のプログラムが異常終了し...
-
Wordマクロで指定したフォルダ...
-
CBool関数について VB6とVB.net...
-
C言語での印刷方法
おすすめ情報