PGMファイルをビットマップに変換するには?

解決


よも  2002-10-23 19:29:40  No: 50499  IP: [192.*.*.*]

pgmファイルになっているものを、Visual C++でWindows上で使えるビットマップにしたいと思っております。

どのようにすればよいのか、なかなか良い案が思いつきません。すべてを直す以外に良い方法があれば、教えてください。

編集 削除
YuO  2002-10-23 21:38:56  No: 50500  IP: [192.*.*.*]

単なるデータ変換ですから,ファイルを読み込んで出力するだけだと思いますが……。


> すべてを直す以外に良い方法があれば、教えてください。

すべてを直す,というのは?

編集 削除
よも  2002-10-24 02:04:22  No: 50501  IP: [192.*.*.*]

お返事ありがとうどざいます。
実は、初心者なものであまり理解していないというものあって、質問がしっかりできていなくてすみません。
下に、pgmファイルのものとDIBファイルのものをのっけてみました。ものすごく長くなるので、かなり抜粋しましたが、
image2[yy][xx]というものをm_RGB[pix]に変換する際は、なにか、コードなどを挿入すればよいのでしょうか?

#include"../PGM.h"
// プロトタイプ宣言 
int main(void);
    return (int)(r_mg * ( px * cos( theta * PI / MAX_THETA ) 
               + py * sin( theta * PI / MAX_THETA ) ) + MAX_RHO / 2.0);
}

void draw_a_curve( double px, double py )
// ρ=x・cosθ+y・sinθの曲線を,配列image2[rho][theta]に描く.   
{if( 0 <= xx && xx < x_size2 && 0 <= yy && yy < y_size2)
      image2[yy][xx] ++;   

void CGazouSyori::Nitika(int gx, int gy, BYTE *BmpImage, LPRGBQUAD m_RGB, BYTE thresh, BYTE color)
{
  
  BYTE pix;
  //ここから二値化処理
  //閾値 thresh
  if(color==255){
  for(int gi=0; gi<gy; gi++)          
    for(int gj=0; gj<gx; gj++){
    pix=*(BmpImage+gi*gx+gj);
    if(m_RGB[pix].rgbRed > thresh){
      *(BmpImage+gi*gx+gj) = HIGH;}
    else{
      *(BmpImage+gi*gx+gj) = LOW;}
    }

編集 削除
YuO  2002-10-24 02:16:33  No: 50502  IP: [192.*.*.*]

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200210/02100108.txt
へのマルチポストは既に回答を付けている私への嫌がらせですか?


> 下に、pgmファイルのものとDIBファイルのものをのっけてみました。ものすごく長くなるので、かなり抜粋しましたが、

コメントを付けてください。
あと,抜粋の仕方を間違えている気がします。


> image2[yy][xx]というものをm_RGB[pix]に変換する際は、なにか、コードなどを挿入すればよいのでしょうか?

LPRGBQUAD (=RGBQUAD *)って何か解っていますか?
http://msdn.microsoft.com/library/en-us/gdi/bitmaps_5f8y.asp
とりあえず,DIBの構造を勉強した方がよいでしょう。

編集 削除
よも  2002-10-24 02:36:16  No: 50503  IP: [192.*.*.*]

実は、明日までに解決をしなくてはいけなかったもので少し焦ってしまい、YuOさんに不快な思いをさせてしまいましてごめんなさい。回答をこんなに早くしていただけていると思いませんでした。ありがとうございました。
今後はDIBの構造のお勉強をもっとしていきます。

編集 削除