BmpBitmapEncoder сохранение в 24 битном формате

BitmapImage src = new BitmapImage();
src.BeginInit();
src.UriSource = new Uri(dialog.FileName);
src.EndInit();
BitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(src));
                
byte[] data;
using (MemoryStream ms = new MemoryStream())
{
     encoder.Save(ms);
     data = ms.ToArray();
}
MainImage.Source = src;
File.WriteAllBytes(@"D:\gtwg.bmp", data);

есть вот такой код, в wpf, выводит изображение и сохраняет его в bmp. Но bmp сохраняется в 32-ух битном формате, как можно сохранять в 24х битном?


Ответы (1 шт):

Автор решения: Aruka

Спасибо, я разобрался FormatConvertedBitmap, решил мою проблему.

BitmapImage src = new BitmapImage();
src.BeginInit();
src.UriSource = new Uri(dialog.FileName);
src.EndInit();
BitmapEncoder encoder = new BmpBitmapEncoder();
FormatConvertedBitmap fcb = new FormatConvertedBitmap();
                
fcb.BeginInit();
fcb.Source = src;
fcb.DestinationFormat = PixelFormats.Bgr24;
fcb.EndInit();
encoder.Frames.Add(BitmapFrame.Create(fcb));
byte[] data;
using (MemoryStream ms = new MemoryStream())
{
     encoder.Save(ms);
     data = ms.ToArray();
}
MainImage.Source = src;
File.WriteAllBytes(@"D:\gtwg.bmp", data);
→ Ссылка