Я пытаюсь сохранить BitmapImage (System.Windows.Media.Imaging) через memystream, чтобы результат можно было использовать для создания Bitmap (System.Drawing).C# BitmapImage AccessViolationException при сохранении как MemoryStream
Я периодически получаю сообщение об ошибке при попытке сохранить закодированный результат в MemoryStream:
An exception of type 'System.AccessViolationException' occurred in PresentationCore.dll but was not handled in user code
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Свойства MemoryStream, кажется, указывают, что чтение или запись тайм-аут произошел.
WriteTimeout = 'msOut.WriteTimeout' threw an exception of type 'System.InvalidOperationException'
код ниже, ошибка выдается по команде Save:
System.Windows.Media.Imaging.CroppedBitmap cbi = new System.Windows.Media.Imaging.CroppedBitmap(bi, new System.Windows.Int32Rect(
(int)(imageViewBox[2] * imageViewBox[10]), (int)(imageViewBox[3] * imageViewBox[11]),
(int)((imageViewBox[4] - imageViewBox[2]) * imageViewBox[10]), (int)((imageViewBox[5] - imageViewBox[3]) * imageViewBox[11])));
newImageSize = new Size(cbi.PixelWidth, cbi.PixelHeight);
using (MemoryStream msOut = new MemoryStream())
{
System.Windows.Media.Imaging.BmpBitmapEncoder enc = new System.Windows.Media.Imaging.BmpBitmapEncoder();
enc.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(cbi));
// Throws access violation exception when zoomed on some images. Why?
enc.Save(msOut);
using (Bitmap temp = new Bitmap(msOut))
{ ...
Изображения в вопросе, как правило, 1000px х 500 так не массивный. Любые идеи, что может быть причиной этого? Или какие-либо идеи, как еще я мог бы сделать преобразование без использования запоминающего устройства (без ухудшения производительности?)