• 締切済み

VC#での24ビットbmp形式での保存方法

VC#でbmpファイルで保存する場合、以下のようにImageFormat.Bmpとすると思いますが、これだと32ビットbmp形式で出力されます。 24ビットbmpで出力する方法はないでしょうか? if (saveFileDialog1.ShowDialog() == DialogResult.OK) { pb1.Image.Save(saveFileDialog1.FileName,ImageFormat.Bmp); }

みんなの回答

noname#30727
noname#30727
回答No.2

C#の事は詳しくないですが、 画像編集用のBitmapのインスタンスを、PixelFormatを指定できるコンストラクタで作成し、読み込んだImageのインスタンスを書き込んでやればいいのでは。

  • jun2004
  • ベストアンサー率42% (24/57)
回答No.1

こんな感じでいかがでしょうか。 image/bmpが見つからなかった場合などのエラー処理は適宜実装してください。 ImageCodecInfo[] es =ImageCodecInfo.GetImageEncoders(); for(int i=0;i<es.Length;i++) { if(es[i].MimeType.Equals("image/bmp")) { EncoderParameters eparams = new EncoderParameters(1); eparams.Param[0] = new EncoderParameter(Encoder.ColorDepth, 24L); pictureBox1.Image.Save("24.bmp", es[i], eparams); } }

manky1225
質問者

補足

ありがとうございます。 動きましたが、やはり32ビットでした。 ペイントで開いて24ビットで保存しても、32ビットのままだし。 フリーソフトで24ビット保存すると、真っ黒になるし。 bmpをウェーブレット変換して、透かし文字を入れて、元に戻すという作業をやっています。単に画像を開いて、保存するだけだと、ImageFormat.BMPでも24ビットでした。透かしを入れると32ビットになるのですが、単にRGB値を変更してるだけなので、ビット数は変わりませんよね。

関連するQ&A

専門家に質問してみよう