アプリ版:「スタンプのみでお礼する」機能のリリースについて

VC#でbmpファイルで保存する場合、以下のようにImageFormat.Bmpとすると思いますが、これだと32ビットbmp形式で出力されます。
24ビットbmpで出力する方法はないでしょうか?

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
pb1.Image.Save(saveFileDialog1.FileName,ImageFormat.Bmp);
}

A 回答 (2件)

C#の事は詳しくないですが、


画像編集用のBitmapのインスタンスを、PixelFormatを指定できるコンストラクタで作成し、読み込んだImageのインスタンスを書き込んでやればいいのでは。
    • good
    • 0

こんな感じでいかがでしょうか。


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);
}
}

この回答への補足

ありがとうございます。
動きましたが、やはり32ビットでした。
ペイントで開いて24ビットで保存しても、32ビットのままだし。
フリーソフトで24ビット保存すると、真っ黒になるし。

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

補足日時:2004/10/04 23:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!