- - PR -
[C#] BitmapクラスのPixelFormatから1pixel当たりのbyte数を得る方法は?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-09-27 20:47
下記のように全ての場合の答えを直接記述する方法もありますが、
直接値を記述せず、既に用意されているプロパティやメソッドの 組み合わせから算出する方法はありますか? 直接記述する方法 public static int GetPixelSize(PixelFormat pixelFormat) { int ans; switch(pixelFormat) { case PixelFormat.Format8bppIndexed; ans = 1; break; case PixelFormat.Format24bppRgb; ans = 3; case PixelFormat.Format32bppArgb; ans = 4; // 続く // // PixelFormat列挙体全部についてcase文を作成する default: ans = -1; } return ans; } | ||||
|
投稿日時: 2006-09-27 21:10
PixelFormat 自体が 'それ' にあたるので、何を所望しているのかわからないです。 列挙体の 'メンバに定義されている実際の数値' という意味であれば、問題なく取得できます。 こちらの会議室で過去に回答した記憶があります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-09-27 21:39
Image クラスにメソッドが用意されてます。
| ||||
|
投稿日時: 2006-09-27 22:55
う、件名読んでいなかった... orz
# というより、本文より件名の方が明快... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-09-28 10:23
言葉足らずですみませんでした。
列挙体の実際の数値では無く、 1画素が実際に占有するメモリ上のbyte数を算出することを意図しています。 例えばFormat8bppIndexedのBitmapであれば、 BitmapDataの画素情報は1byteで構成されているはずです。 同様に Format24bppRgbであれば、RGBで3byte、 Format32bppArgbであれば、ARGBテで4byte で構成されていることになります。 PixelFormatを与えると、上に示した例で言うところの1byte/3byte/4byteに 相当する値を返す方法が知りたいのです。 よろしくお願いします。 | ||||
|
投稿日時: 2006-09-28 10:26
って書いてあるんだけどねぇ。 http://msdn2.microsoft.com/ja-jp/library/system.drawing.image_methods.aspx _________________ 質問する前にググレカス | ||||
|
投稿日時: 2006-09-28 10:40
こんにちは。
…っと書こうと思ったらぶさいくろうさんがすでにコメントされていますねぇ。 せっかくなので、私も少しヒント。 そのもののメソッドが用意されているということで調べてみたところ、確かにその ようなメソッドが見つかったわけで、そこにはこういう説明が書いてありました。
あとはビットの数をバイトの数に変換してあげればおわり名古屋のマウンテンな のではないでしょうか。 ひろしさんのようなコーディングもアリだとは思いますが(今回みたいに必ずしも ピタリなメソッドが用意されているとは限らないし)そのときでも case を連ねる よりは、最初に Hashtable に入れておいてそこから取り出す方法を選ぶと思 いますね。前回の質問で「速度アップのため」と書いてありましたし。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||
|
投稿日時: 2006-09-28 10:57
唐突に出てくるマウンテンにいちごスパ吹いた
|