• 締切済み

ピクセル値の取得

C++Builderでプログラムを作っていますが、分からないことがあります。 あるbmpファイルを読み込んで、そのピクセル値を取得したいのです。 ファイルの読み込みは、 pBitmap->LoadFromFile("test.bmp"); Image1->Picture->Graphic = pBitmap; みたいな形で表示できました。 ピクセル値の取得方法を教えて下さい。

みんなの回答

noname#4252
noname#4252
回答No.1

TCanvas の Pixels プロパティで取得できます。

handle100
質問者

お礼

ありがとうございました。

関連するQ&A

  • C++ Builderにおける画像データの取得について

    C++での画像処理プログラムの研究をしている者です。 文字数制限がありますので簡潔になりますがよろしくお願いします。 担当教官から基本となるプログラムをいただいたのですが実行するとエラーが出てしまいます。 プログラム内容: void TImg::ImgMemToBmp(Graphics::TBitmap *bmp, BYTE *img) { GetBmpHdr(); // ビットマップヘッダー取得 String fileName = StartDir + "\\tmp.bmp"; FILE *fp;if (NULL == (fp = fopen(fileName.c_str(), "wb"))) return; fwrite(BmpHeader, 54, 1, fp); // ヘッダー //******** 画像書き込み ******** BYTE *p, *img1 = (BYTE *)malloc(Pixel_X_Max*3); for (int y=0; y<Pixel_Y_Max; y++) { p = img + (Pixel_Y_Max-y-1) * Pixel_X_Max; for (int x=0; x<Pixel_X_Max; x++) { *(img1+3*x) = *(img1+3*x+1) = *(img1+3*x+2) = *(p+x); } fwrite(img1, Pixel_X_Max*3, 1, fp); } fclose(fp); bmp->LoadFromFile(fileName); // BMPファイル読み込み DeleteFile(fileName); free(img1); // 不要ファイル、メモリ削除 } 問題点:下から3行目の bmp->LoadFromFile(fileName); でクラスの例外が発生しました。"ビットマップが不正です"とのエラーが出ます。 私なりにプログラムを解析してみたところ で、tmp.bmpというファイルを作りそこに白黒画素値を書き込んでいるように思うのですが 途中で止めてtmp.bmpのサイズを確認してみたところ 原画像が640×480の画像でtmp.bmpのサイズは20971840×15728640となっていました。 これが原因でエラーと出たのではないかと考えたのですがいかがでしょうか? 補足要求していただければ、適宜補足いたしますので どうかご助力をよろしくお願いいたします。

  • BCBで画像を拡大印刷したい

    C++Builder5を使っています。 会社で印刷するプリントに会社のロゴを同時に印刷したい、という要求があり、BMPを印刷するテストプログラムを作りました。 ロゴの画像は300dpiでスキャンしたものをBMPにしてファイルとして保存してあります。 ソースの抜粋は次のとおりです。 int x,y; Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->LoadFromFile(FLNM); //FLNMにはBMPファイル名が格納されています。 Printer()->Canvas->Draw(x,y,pBitmap); xとyは、 GetDeviceCaps(Printer()->Handle,LOGPIXELSY)でプリンターの解像度を得て、印刷位置をドットに変換済みです。 これで画像は希望する位置に印刷できたのですが、(当初から予想はしていましたが)問題があります。 プリンターの解像度によって画像の大きさが変わってしまいます。 プリンターの解像度に合わせて画像を拡大印刷したいのですが、方法はあるでしょうか? 例えば、プリンター解像度が600dpiなら縦横2倍の大きさで印刷する、ということです。 TBitmapのHeightを2倍にしてみたのですが、元の画像に余白が追加されただけで、希望通りの大きさでは印刷できませんでした。 よろしくご指導ください。

  • 【VC++6.0 MFC】画像表示について

    お世話になっております。C++初心者です。 とある開発でVC++6.0のMFCを利用して画像表示を行う作業をしています。 リソースファイルを使用せず、 外部の画像ファイルを読み込みピクチャーボックスに表示しなければならないのですが、 下記の関数を呼び、BMPファイルを読み込み、 NULLの場合はエラーメッセージを表示するようにしているのですが、 必ずNULLが返ってきてしまいます。 何が問題なのかもわからず苦戦しております。 知識不足で申し訳ないのですが、お願いします。 【疑問点】 ・画像ファイルの指定は絶対パス?相対パス? ***問題の箇所*** HBITMAP hBmp; // ビットマップハンドル // ビットマップのハンドル取得 hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),"1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); // ハンドルのチェック if(hBmp == NULL) {   AfxMessageBox("読み込みに失敗しました");   return ; }

  • BASICで画像のx,y座標の取得方法について

    Active Basicでプログラムを書いています。 今、簡単なゲームを作ってみようと思い、プログラムを書いているのですが、画像の座標の取得の部分で躓いてしました。 画像Aに画像Bが触れたときに『アウト』とメッセージを出す、簡単な、物を避けるゲームなのですが、グローバルで、 Dim BombRect As RECT Dim HitoRect As RECT を定義して、画像が重なったかどうかを判定するときに、 GetWindowRect(hBmp04,BombRect) GetWindowRect(hBmp01,HitoRect) で、読み込もうとしましたが、座標が格納されてくれません。 hBmp01とhBmp04には、下のようにして画像を読み込みました。 'グローバル Dim hBmp01 As HWND Dim hBmp02 As HWND Dim hBmp03 As HWND Dim hBmp04 As HWND 'ウインドウ作成時 hBmp01 = LoadImage(0,".\画像\人\普通.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) hBmp02 = LoadImage(0,".\画像\人\右.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) hBmp03 = LoadImage(0,".\画像\人\左.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) hBmp04 = LoadImage(0,".\画像\爆弾\ボム.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) もし、やり方をご存知の方がいらっしゃいましたら、すみませんが、ご教授お願いします。 また、もっと簡単な方法がありましたら、そちらも教えていただけると嬉しいです。

  • VBSを利用して、ファイル名を取得

    VBSを利用して、ファイル名を取得 はじめまして VBSを利用して、ファイルのフルパスを取得したいと思っております。 具体的には、フォルダ内のファイルを1ファイルずつ取得するようなプログラムを 作成したいと思っております。 C:\TEST \2010 \aaa.csv C:\TEST \2010 \bbb.csv C:\TEST \2009 \ccc.csv C:\TEST \2008 \ddd.csv C:\TEST \2008 \eee.csv フルパスを取得したいのですが、どのようにしたら良いでしょうか。 最終的には、上記の読み込んだファイルごとにファイルの中身を1行ずつ確認して、 特定の文字が含まれているか確認をするようなスクリプトにしようと思っております。 そのため、objFS.OpenTextFile("取得フルパス",ForReading)のようにして 取得したフルパスごとに読み込みをしようと思っております。 どなたか、お手数ではございますが、ご教授願います。

  • JPEGやPNGが読めるLoadImage関数

    BCCで、 hBitmapA=(HINSTANCE)LoadImage(hInst,"A.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); hBitmapB=(HINSTANCE)LoadImage(hInst,"B.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);    : GetObject(hBitmapA,sizeof(BITMAP),&bitmapA); GetObject(hBitmapB,sizeof(BITMAP),&bitmapB);    : のように複数のBMPファイルを読んで、描画しているプログラムがあります。 JPEGファイルやPNGファイルを同様に扱えるように拡張したいのですが、LoadImage関数では、対応していないので、たとえば、LoadImagePng()やLoadImageJpeg()といった関数を探しています。どこかにありますか?

  • C++の画像処理について【画像のピクセル値を表示する方法】

    画像処理に関する質問です。初歩的なことかもしれませんが、ご教授お願いいたします。 開発環境はVisual C++ 2005です。 JPEGまたはBMP画像を読み込んで、その画像のピクセル値を表示するプログラムを作成したいのですが、まったくどうしてよいか判らず、行き詰っています。 これまでいろいろ試してみたのですが、読み込んだ画像をBit値に変換してしまったり(そのせいでパソコンがクラッシュしてしまいました…)、うまくいきません。 画像処理の対象となる原画像を取り込み、その原画像のピクセルの色情報を表示するためには、どのような処理を行えばよいのでしょうか? どうぞよろしくお願いします。

  • FORTRAN でBMP画像の値の取得

    FORTRAN でBMP画像の値の取得をしたいのですが,どうすればいいでしょう? たとえば,10×10画素の8bitのbmp画像の各ピクセルの値を読んで,テキストに書き出したいとします. ですので,できるファイルは・・ 1,1,255 1,2,255 ・ ・ ・ みたいに,X座標,Y座標,そこの値 っていうふうにしたいんです. わからないのは,BMP画像の値の取得方法です. また,bmpを読み込んで,その情報を元にまたbmpを作る時はどうすればいいでしょう? 長々とすいません.

  • VB6でPNGファイルを扱うには?

    VB6の標準コントロールであるPictureやImageでは、PNG(Portable Network Graphic)ファイルは表示できないと思いますが、これを表示する為の方法はないでしょうか? よろしくお願いします。

  • pictureboxに表示した画像のファイル名を取得したい。

    PictureBox1.image=image.fromfile("c:\a.jpg") のように画像を表示したピクチャーボックスの ファイル名c:\a.jpgを取得するには どのように書いたら良いでしょうか。 VB.NETでございます。m(__)m

専門家に質問してみよう