5

How Do I convert BitmapSource to MemoryStream. Though I tried some code:

private Stream StreamFromBitmapSource(BitmapSource writeBmp) { Stream bmp; using (bmp = new MemoryStream()) { BitmapEncoder enc = new BmpBitmapEncoder(); enc.Frames.Add(BitmapFrame.Create(writeBmp)); enc.Save(bmp); } return bmp; } 

It doesn't give any error but after putting debugging point it is showing some exceptions which are listed below.

Capacity: 'printStream.Capacity' threw an exception of type 'System.ObjectDisposedException' Length: 'printStream.Length' threw an exception of type 'System.ObjectDisposedException' Position: 'printStream.Position' threw an exception of type 'System.ObjectDisposedException'

1
  • Thanks! Clemens, I gave my votes to the answers posted. :), and I want my color frames to get save on memory buffer to use easily with face recognition API.So, I'm returning my result to a Stream which my face recognition API will utilize. Commented Feb 16, 2017 at 15:39

2 Answers 2

8

using (bmp = new MemoryStream()) causes bmp object is destroyed on end using block. And You return bmp variable which is destroyed.

Remove using:

private Stream StreamFromBitmapSource(BitmapSource writeBmp) { Stream bmp = new MemoryStream(); BitmapEncoder enc = new BmpBitmapEncoder(); enc.Frames.Add(BitmapFrame.Create(writeBmp)); enc.Save(bmp); return bmp; } 
Sign up to request clarification or add additional context in comments.

1 Comment

ReadTimeout = 'imgStream.ReadTimeout' threw an exception of type 'System.InvalidOperationException' WriteTimeout = 'imgStream.WriteTimeout' threw an exception of type 'System.InvalidOperationException' Thanks for helping me out. But now I'm facing trouble with these two exceptions
0

The problem here is that you are creating bmp inside an using, that's why it has been disposed before you return it (it is disposed once you leave the using) and that explains the exceptions you receive.

private Stream StreamFromBitmapSource(BitmapSource writeBmp) { Stream bmp= new MemoryStream(); using (enc = new BmpBitmapEncoder()) { enc.Frames.Add(BitmapFrame.Create(writeBmp)); enc.Save(bmp); } return bmp; } 

3 Comments

ReadTimeout = 'imgStream.ReadTimeout' threw an exception of type 'System.InvalidOperationException' WriteTimeout = 'imgStream.WriteTimeout' threw an exception of type 'System.InvalidOperationException' Thanks for helping me out. But now I'm facing trouble with these two exceptions
No, It isn't helping and I'm using BitmapSource instead of Bitmap

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.