У меня есть массив 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 делает то же самое без черного. Отображаемая область выглядит так, как будто изображение было обрезано контуром эскиза (просто для описания визуального эффекта). Кроме того, если вы затем откроете png в Paint, изображение будет отображаться целиком, но не для версии bmp (Irfanview не может справиться с любым из файлов)
Что здесь происходит? Что мне не хватает?