• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PBMのデータを保持するにはどの方法がいいでしょうか?)

PBMデータの保持方法について

このQ&Aのポイント
  • PBMデータを保持するためには、構造体を使用するのが適切です。
  • 画像データを連続した値として格納するには、一行ずつではなく、一文字ずつ読み込んで格納する必要があります。
  • pbm_dataという配列を作成し、読み込んだ値をその配列に連続して格納することで、画像データを保持できます。

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

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

★一般論 ・C言語なら構造体、C++言語ならクラスなどで読み込んでデータを管理するのか  一番すっきりするでしょうね。C++言語ならばメンバ関数でやり取りを出来ます。 ・あと1行ずつ読み込むと配列に連続した値として格納できないのでは?ってどういう事?  複数の『pbm』画像データを連続して読み込んだとき、その複数の画像データの部分が  連続しているように格納したいということですか?  この辺の部分をもう少し補足してくれますか? ・それから、BMP画像の読み込み、書き出しは成功しているため、『pbm』の画像データも  同じような構造体で管理するという方法はどうでしょうか。→横、縦、データ部のみ。  また、画像データ部はchar型の配列に横(24桁)×縦(7列)=168バイトに連続して格納  していき、横サイズ、縦サイズからchar型配列で1行の長さと計算させて取り出す仕組み  にするのはどうでしょう。 構造体: struct pbm_t {  int no; // マジックナンバー  int sx; // 画像の幅  int sy; // 画像の高さ  char img[ 1 ]; } pbm_t; 解説: ・上の構造体はメンバ img が可変長のデータを格納するようにするため [1] というサイズに  なっています。この構造体をメモリ(malloc)で確保するとき、画像の横×画像の縦+構造体の  サイズを足した容量を確保します。こうすれば、構造体 pbm_t で画像の縦と横が変動しても  char 型の img 配列でデータを連続して管理できます。→BMP画像ファイルなどと考えは同じです。 ・以上。参考に!

DT50
質問者

お礼

Oh-Orange様 いつもご回答ありがとうございます。プログラムを完成させることができました。 >・あと1行ずつ読み込むと配列に連続した値として格納できないのでは?ってどういう事? >複数の『pbm』画像データを連続して読み込んだとき、その複数の画像データの部分が  連続しているように格納したいということですか? > この辺の部分をもう少し補足してくれますか? このことについては解決したので大丈夫です。 >・上の構造体はメンバ img が可変長のデータを格納するようにするため [1] というサイズに  なっています。この構造体をメモリ(malloc)で確保するとき、画像の横×画像の縦+構造体の  サイズを足した容量を確保します。こうすれば、構造体 pbm_t で画像の縦と横が変動しても  char 型の img 配列でデータを連続して管理できます。 この方法は思いつきませんでした。次回に活かします。ありがとうございました!

関連するQ&A