• ベストアンサー

vc++にて、画像の色の情報表示プロパティをおしえてください。

vc++のマネージ形式で,bmpやjpgの画像からこの画像は、4byte、あの画像は24byteとの色情報が使われてるとか色情報をbuttonを押してlabelに表示したいのですがどのプロパティを使えばいいかわかりません。MSDNでも探しましたけどわかりませんでした。初心者なので適切に教えてくれたらうれしいです。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

色深度の単位に Byteは使いません 一般的には bitを使います Imageオブジェクトに画像ファイルからの読み込みはできているのでしょうから img->PixelFormatを参照すれば 何bit可能判定は可能でしょう int nColorDepth = 0; switch( img->PixelFormat ) { case Format1bppIndexed:   nColorDepth = 1;   break; case Format4bppIndexed:   nColorDepth = 4;   break; case Format8bppIndexed:   nColorDepth = 8;   break; case Format16bppGrayScale: case Format16bppArgb1555: case Format16bppRgb555: case Format16bppRgb565:   nColorDepth = 16;   break; case Format24bppRgb:   nColorDepth = 24;   break; case Format32bppArgb: case Format32bppPArgb: case Format32bppRgb:   nColorDepth = 32;   break; case Format48bppRgb:   nColorDepth = 48;   break; case Format64bppArgb: case Format64bppPArgb:   nColorDepth = 64;   break; } String^ ss = String::Format( "色深度は{0,2}bitです", nColorDepth ); Label1->Text = ss; といった具合でしょう

maru_min
質問者

お礼

適切なアドバイスありがとうございました。

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

BitmapクラスのPixelFormatプロパティを使います。 取りうる値とその意味は↓に書かれている通りなので、これらと比較した上でビット数を判断すればいいです。 http://msdn.microsoft.com/ja-jp/library/system.drawing.imaging.pixelformat(VS.80).aspx #Formatで始まらない値については無視していいです

関連するQ&A

  • VC++のマネージ形式での課題で・・・。

    VC++で、ビットマットフォーマットをマネージ形式でをする。課題がでました。 課題は、ピクチャーボックスにbmpファイルを表示して、表示したbmpからボタンを使って、ラベルや、テキストボックスに、そのbmpのバイト数や、画像に関する、情報を表示する課題です。 今は、ピクチャーボックスから画像を出すことはできたんですが、その後にどうやって画像に関する色のバイト数や、情報をマネージ形式で表示するかわかりません。 プログラムつくってもエラーばっかでわかりません。 例として、ボタン1をクリックして、ボタン1でラベルにbmpのバイト数を出したいんですがエラーします。 プログラム例は、  botton1 click ・・・ { bitmap^bmp; bmp = Bitmap("bmpのファイル名"); label1->Text = bmp; }   これで、ずっとエラーします。誰か適切なアドバイスください。いろいろサイトみてもMFC形式のやりかたばかりでわかりません。 マネージ形式でのやり方を教えてください。

  • プログラムで、bmpをjpgに替えたらエラーして困ってます・・・。

    マネージ形式でbmpの画像の情報をlabel1などで表示できたんですけど、ファイル名の形式をjpgにしたら、情報が表示できずにエラーしました。 どこがまちがってるか、教えてください。 エラーした、プログラムをのせるんでアドバイスお願いします。 private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {   Bitmap^image2; image2 = gcnew Bitmap( "画像名.jpg");   pictureBox1->Image = image2;        label3->Text = String::Format("幅(width) 高さ(height): {0}", image2->Size); } この、プログラムで、bmgの時は、image2 = gcnew Bitmap( "画像名.bmp");で、組んでエラーはなっかたんですけど、jpgの時は、image2 = gcnew Bitmap( "画像名.jpg");でしたら、エラーします。 MSDNで探してもわからず、色々試したんですがエラーしかでません。 ネットで検索してもあまりいい例が見つかりませんでした。適切なアドバイスお願いします。

  • VC++で困ってます・・・。

    VC++で、ビットマットフォーマットをする。課題がでました。 課題は、ピクチャーボックスにbmpファイルを表示して、表示したbmpからボタンを使って、ラベルや、テキストボックスに、そのbmpのバイト数や、画像に関する、情報を表示する課題です。 今は、ピクチャーボックスから画像を出すことはできたんですが、その後にどうやって画像に関する色のバイト数や、情報を表示するかわかりません。 どこを、いじってプログラムを作っていくかもわからない状況です。 初心者なんで、プログラムの例や、ビットマップファイルに使うプログラムとかいろいろ教えてください。

  • pictureBoxに落書きするには・・・

    vc++のマネージ形式で、buttonを使ってON/OFFの機能をつけて、pictureboxにマウスで落書きしたいんですが、どのプロパティを使えばいいかわかりません。 Penか、Graphicsのプロパティを使えばいいんですか? 何かいい例あったら教えてください。

  • VC++ label などのプロパティ設定

    C++初心者です。 ご教授よろしくお願いします。 Visual Basic C++ において、 label,button などのプロパティ設定を行う際、 this->label3->Name = L"label3" といった固定値での設定ではなく、変数で設定を行いたいと考えています。 イメージはこのような感じです。 this->label$i->Name = L"label$i" 最終的には、for文で回して、以下のような設定をしたいと考えています。 for(i=1;i<=3;i++){ this->label$i->Name = L"label$i"; } おおよそ以上のようなことをしたいのですが、 実際にどういったコードを記述すればよいかわかりません。 どなたかご教授よろしくお願いします。

  • (VC++2010)画像をドラッグしたいのですが

    VC++初心者です。 学校の課題で、 Buttonを押して、画像ファイルを読み込みpictureBox1に表示 ↓ pictureBox1上でマウスドラッグをして、ドラッグで選択された長方形の部分の画像をコピーし、pictureBox2に表示 というプログラミングを書きたいのですが、ドラッグのところで詰まってしまっています。 ドラッグを開始した座標などをどう上手く使って行けばいいのかがわかりません… 初心者すぎて質問の仕方もイマイチわからないのですがどなたか教えて頂けると幸いです。

  • プロパティウィンドウのプロパティを非表示にするには?

    Inherits System.Windows.Forms.Button を継承してサイズや色を設定しています。 デザイナで貼り付けたあとサイズや色のプロパティが 変更できてしまうのですが、このプロパティを 非表示にする事は可能でしょうか? 使用環境はVB 2005です。

  • 【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 ; }

  • 画像の劣化について詳しく教えて下さい

    質問させて頂きます。 jpgの画像を縦や横に回転させると劣化するらしいのですが これは本当にjpg形式のみに限ってなのでしょうか? png形式で試してみたところ画像の見た目はほとんど変わりませんでしたが 何故かファイルサイズが30バイト程大きくなっていたんです。 詳しい回答よろしくお願いします。 それとjpgからpng jpgからbmpなどへ画像の形式を変換しても画像の質は劣化しないものなんでしょうか? jpgから他の形式へ変更してから更にそこからまたjpgに変換すると劣化するのは分かっています。 こちらも回答よろしくお願いします

  • 画像の白黒表示

    Visual C++6.0でjpgなどのカラーの画像を白黒にして 保存したいのですが、どうすればよいでしょうか? 日本語プログラミング言語「なでしこ」でソースを 組んでみたのですが、やはりインタプリタなので 速いとは言えず290x350の画像で30分程度かかってしまいます。 なでしこでは 画像を表示してその表示されている色を取得して RGBの形式にし、それを下のURLを参考に (r*30 + g*59 + b*11)/100しています。 VCでjpgなどを処理するにはどうすればよいでしょうか? http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-039.html

専門家に質問してみよう