0

32 ビット rgb bmp イメージを 24 ビット rgb bmp に変換する必要があります。

これは私がやろうとしていることです

Bitmap b1=new Bitmap(sorecFileName);

Bitmap b2=new 

Bitmap(b1.Size.Width,b1.Size.Height,System.Drawing.Imaging.PixelFormat.Format24bppRgb);       
b2.SetResolution(b1.HorizontalResolution, b1.VerticalResolution);

Graphics g=Graphics.FromImage(b2);

g.DrawImage(b1,0,0);

//continue to draw on g here to add text or graphics.

g.Dispose();

b2.Save(destinationFileName);

コードは正常にコンパイルされ、24bpp の出力画像が生成されますが、RGB 形式ではなくなりました。これはなぜですか?

画像をrgb24として入力して表示するライブラリがあるので、それを理解しました。したがって、上記のコードで生成されたファイルを関数への入力として与えようとすると、ノイズの多い画像が表示されます。

ただし、同じファイルをペイントで開き、24bpp bmp として保存し、関数に入力すると、画像は正常に表示されます。私は何が欠けていますか?

4

2 に答える 2

2
  b2.Save(destinationFileName);

画像ファイル形式を指定していません。デフォルトはPNGであり、BMPではありません。これで、実際にPNGイメージを含む.bmpファイルがディスク上にある可能性があります。それはかなり長い間検出されない可能性があり、多くのグラフィックプログラムはファイル名拡張子ではなくファイルヘッダーに注意を払います。たとえば、MSPaintはファイルのロードに問題はありません。GDI+を使用する他のプログラムと同じように。ファイルにBMPが含まれていると盲目的に想定し、チェックをまったく行わないプログラムでは、それほど幸運ではないかもしれません。修理:

  b2.Save(destinationFilename, System.Drawing.Imaging.ImageFormat.Bmp);
于 2011-02-11T11:27:58.123 に答える
0

黒い画像を取得した場合 - g.Clear(Color.White); を追加します。

于 2011-10-05T12:01:08.100 に答える