将 BitmapSource 转换为 MemoryStream
Convert BitmapSource to MemoryStream
如何将 BitmapSource 转换为 MemoryStream。虽然我尝试了一些代码:
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;
}
它没有给出任何错误,但在放置调试点后它显示了下面列出的一些异常。
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'
这里的问题是您正在 using
中创建 bmp
,这就是为什么它在您 return 之前就被处理掉了(一旦您离开使用它就会被处理掉)这解释了您收到的例外情况。
private Stream StreamFromBitmapSource(BitmapSource writeBmp)
{
Stream bmp= new MemoryStream();
using (enc = new BmpBitmapEncoder())
{
enc.Frames.Add(BitmapFrame.Create(writeBmp));
enc.Save(bmp);
}
return bmp;
}
using (bmp = new MemoryStream())
导致 bmp
对象在使用块结束时被销毁。而你 return bmp
变量被破坏了。
删除使用:
private Stream StreamFromBitmapSource(BitmapSource writeBmp)
{
Stream bmp = new MemoryStream();
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(writeBmp));
enc.Save(bmp);
return bmp;
}
如何将 BitmapSource 转换为 MemoryStream。虽然我尝试了一些代码:
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;
}
它没有给出任何错误,但在放置调试点后它显示了下面列出的一些异常。
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'
这里的问题是您正在 using
中创建 bmp
,这就是为什么它在您 return 之前就被处理掉了(一旦您离开使用它就会被处理掉)这解释了您收到的例外情况。
private Stream StreamFromBitmapSource(BitmapSource writeBmp)
{
Stream bmp= new MemoryStream();
using (enc = new BmpBitmapEncoder())
{
enc.Frames.Add(BitmapFrame.Create(writeBmp));
enc.Save(bmp);
}
return bmp;
}
using (bmp = new MemoryStream())
导致 bmp
对象在使用块结束时被销毁。而你 return bmp
变量被破坏了。
删除使用:
private Stream StreamFromBitmapSource(BitmapSource writeBmp)
{
Stream bmp = new MemoryStream();
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(writeBmp));
enc.Save(bmp);
return bmp;
}