У меня есть массив byte [] с bgra-байтами изображения, из которого я создаю BitmapSource следующим образом:
BitmapSource bmsOut = BitmapSource.Create(
iPixelWidth, iPixelHeight, 96, 96, PixelFormats.Bgra32, null, bytOutput, iStride);
это нормально отображается на элементе изображения wpf. ОДНАКО, когда я тогда пытаюсь создать файл из BitmapSource:
private void mtdSave(BitmapSource bitmapSource, string path, BitmapEncoder encoder)
{
using (var stream = new FileStream(path, FileMode.Create))
{
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
encoder.Save(stream);
}
}
Я получаю странный вывод в зависимости от используемого кодера: bmp дает небольшое, может быть, 10x10 пиксельное изображение центра изображения в черном море, png делает то же самое без черного. Отображаемая область выглядит так, как если бы изображение было обрезано контуром миниатюры (просто для описания эффекта visula). Кроме того, если вы затем откроете png в программе Paint, все изображение будет отображено, но не для версии bmp (Irfanview не может справиться с любым из файлов)
Что происходит? Чего мне не хватает?