0~255のランダムデータをPGM画像として表示させる方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
lvparisvl

0~255のランダムデータをPGM画像として表示させる方法

#1

投稿記事 by lvparisvl » 9年前

修論で必要なプログラムについて質問があります。
最終的な目標は既存のバイナリデータ(1ピクセル1バイトRAWデータ)をSEEK等で任意個のピクセルを間引きして画像として表示させるプログラムを作成したいと思っています。
その途中の段階で、間引いたデータを直接画像として表示するプログラムを作成したいのですが、どのように作成すれば良いかわかりません。
現状は、間引いたデータを一度PGMファイルとして書き出し、そのファイルを再び読込んで表示するプログラムなら完成したのですが、書き込み等のせいで処理時間がかかります。
そこで、ファイルとして書き出さずに画像表示できるプログラムを教えてください。
(配列に格納されているデータをPGM画像として表示する方法が分かれば、この問題は解決すると思われます。)

** ”データ配列をBMP画像表示する” 様な質問は見かけるのですが、PGM画像表示のものは、探してみましたがみつかりませんでした。
プログラムの流れとしては、
ファイルオープン→間引いたバイナリデータを配列に順に格納→画像表示→ファイルクローズ
でいけると思うのですが・・・

御指導宜しくお願い致します。

ぬっち
記事: 105
登録日時: 9年前
連絡を取る:

Re: 0~255のランダムデータをPGM画像として表示させる方法

#2

投稿記事 by ぬっち » 9年前

ライブラリ使用であるなら、libpngを使用する手があります。
ついでに、ここには読み込みの仕方もサンプルで載っています。
http://hp.vector.co.jp/authors/VA016379 ... libpng.htm

もしご自身でpngファイルの解析されるのであれば、
http://www.geocities.co.jp/Playtown-Yoy ... e-png.html
にあるように、zlibという圧縮を自分で解凍しなければなりません。

zlibの圧縮や解凍のライブラリも実は公開されています。
http://hp.vector.co.jp/authors/VA016379/cpplib/zlib.htm

zlibの圧縮アルゴリズムを知りたい場合は、
http://www.zlib.net/
http://www.futomi.com/lecture/japanese/index.html#zlib
あたりを参考にすると良いでしょう。
特に本家のページにはそのソースコードまで公開されています。


ぬっち
記事: 105
登録日時: 9年前
連絡を取る:

Re: 0~255のランダムデータをPGM画像として表示させる方法

#4

投稿記事 by ぬっち » 9年前

>h2so5さん
てっきりPNGかと思ってました。。。

>lvparisvlさん
投稿したものは無かったものにしてください^^;
混乱させてしまって申し訳ありませんm(--)m

lvparisvl

Re: 0~255のランダムデータをPGM画像として表示させる方法

#5

投稿記事 by lvparisvl » 9年前

>ぬっちさん

はい^^
コメント頂けたことは嬉しいので、ありがとうございました^^


>h2so5さん
鋭いご指摘、ありがとうございます!

アバター
あたっしゅ
記事: 261
登録日時: 9年前
住所: 東京23区
連絡を取る:

Re: 0~255のランダムデータをPGM画像として表示させる方法

#6

投稿記事 by あたっしゅ » 9年前

フォーラムルールにしたがって、OS や言語処理系を明記してくださらないと、
具体的な答えがかえってこないと思います。
PGM ってことは、UNIX 系なんでしょうか ? ここは、Windows 系の人が多いです。

>ファイルオープン→間引いたバイナリデータを配列に順に格納→画像表示→ファイルクローズ

という流れはあってます。
しかし、「配列に格納されたバイナリーデータを表示する」というのは、環境依存なんですよ。
PGM の表示は、なんかのライブラリを呼んだだけですか ?
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

閉鎖

“C言語何でも質問掲示板” へ戻る