2009-04-28 12 views
2

問題No1。 My own Related problemイメージが16bppGrayscaleの間にビットマップからカラーイメージを取得する

私は問題ありません2今ここ

次の質問をしました。

生ピクセルデータ から16ビット(単色)画像を開こうとすると、エラーが発生します。 私は

Bitmap bmp = new Bitmap(Img_Width, Img_Height,PixelFormat.Format16bppGrayscale); 

だからググので、私は以下のように私のコードをmodifed Format16bppGrayscaleがサポートされていない見つけたビットマップの作成にPixelFormat.Format16bppGrayscaleを使用していますので。

PixelFormat format = PixelFormat.Format16bppRgb565; 
Bitmap bmp = new Bitmap(Img_Width, Img_Height, format); 
Rectangle rect = new Rectangle(0, 0, Img_Width, Img_Height); 
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, format); 
Marshal.Copy(rawPixel, 0, bmpData.Scan0, rawPixel.Length); 
bmp.UnlockBits(bmpData); 

驚くべきことは、私がpixelFormatを変更するため、今私がイメージを取得していることです。 しかし、問題は、私のモノクローム(グレースケール)画像がさまざまな色で見えることです。

どのように元の外観を得ることができます。私はいくつかのグレースケール方法を試みたが、成功しなかった 私にいくつかの安全でないコードを教えてください。 ありがとう、

+0

これは次のように変更できますか? http://www.eggheadcafe.com/forumarchives/NETFrameworkdrawing/Nov2005/post24405677.asp – hometoast

答えて

2

BobPowell's GDI+ FAQ has a bit about greyscale .NETの16bppは動作しません。 32bppですべてをやらなければならず、変換のための外部ツールに頼る必要があります。幸運にも(?)私はTIFFの画像をほとんどの時間張り付ける。また、this threadが役立つ可能性があります。

+0

私は以前にその投稿を見ました。 私はBobPowell FAQを見て、そのコードを試しました。 イメージの色は、ランダムな色に変更されていますが、グレースケールには変更されていません。 私はバイトコードからの投稿も見ました。 彼は私と同じことを求めています。 私はまた、医療画像のために働いています。 – prashant

0

パレットをグレースケールパレットに変更する必要があります。 8bppIndexedのデフォルトのパレットは256色です。

ColorPalette pal = myBitmap.Palette; 

for (int i = 0; i < pal.Entries.Length; i++) 
    pal.Entries[i] = Color.FromArgb(i, i, i); 

myBitmap.Palette = pal; 
関連する問題