Сохранение изображения в MemoryStream - общая ошибка GDI +
Обзор моего приложения: на стороне клиента серия снимков сделана с веб-камеры. При отправке я хочу, чтобы изображения были преобразованы в байтовый массив, и чтобы этот байтовый массив был отправлен в службу, которую я написал.
Моя проблема: я пытаюсь сохранить одно изображение вMemoryStream
, но он продолжает ломаться, выплевывая сообщение,"A generic error occured in GDI+." Когда я копаю глубже, я вижу, что исключение выдается, когда позиция буфера в MemoryStream равна 54. К сожалению, это1.2 mb
Фото. Вот блок кода:
// Create array of MemoryStreams
var imageStreams = new MemoryStream[SelectedImages.Count];
for (int i = 0; i < this.SelectedImages.Count; i++)
{
System.Drawing.Image image = BitmapFromSource(this.SelectedImages[i]);
imageStreams[i] = new MemoryStream();
image.Save(imageStreams[i], ImageFormat.Bmp); /* Error is thrown here! */
}
// Combine MemoryStreams into a single byte array (Threw this
// in in case somebody has a better approach)
byte[] bytes = new byte[imageStreams.Sum(s => s.Length)];
for(int i = 0; i < imageStreams.Length; i++)
{
bytes.Concat(imageStreams[i].ToArray());
}
А вот мой метод BitmapFromSource
// Converts a BitmapSource object to a Bitmap object
private System.Drawing.Image BitmapFromSource(BitmapSource source)
{
System.Drawing.Image bitmap;
using (MemoryStream ms = new MemoryStream())
{
BitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(source));
encoder.Save(ms);
bitmap = new System.Drawing.Bitmap(ms);
}
return bitmap;
}
Многое из того, что я прочитал об Общей ошибке GDI +, указывает на проблему с разрешениями, но я не вижу, как это применимо, учитывая, что я не сохраняю файл в файловую систему. Кроме того, я видел, что эта ошибка может возникать из-за закрытия MemoryStream до сохранения изображения, но я также не вижу, как это будет применяться, учитывая, что я создаю MemoryStream непосредственно перед сохранением изображения. Любое понимание будет с благодарностью.