如何克隆FileStream类型?
问题是我在保存之前使用MagickNet.Image(inputStream)
来获取图像,但它似乎关闭了inputStream。
那么,我可以将一个inputStream的克隆发送给该函数,所以该函数无法编辑真正的inputStream对象吗?
这是我的功能:
public Picture GetPictureDimension(Stream inputStream, Picture picture)
{
var img = new MagickNet.Image(inputStream);
picture.Width = img.Columns;
picture.Height = img.Rows;
return picture;
}
答案 0 :(得分:2)
你可以重新打开文件吗?但要保持单Stream
而不关闭它,您可以在MiscUtil中尝试NonClosingStreamWrapper
。如果合适,请务必重置Position
。
答案 1 :(得分:1)
您没有发布完整代码,但我认为MagickNet.Image(inputStream)
获取完整图像,您只使用其中的大小,稍后再次加载图像。
因此,一个更实际的解决方案是将图像存储在内存中一次。这样您就可以访问尺寸。
您似乎没有意识到这一点,但您正在询问如何加载图像两次(无需重新打开流)。我认为加载它一次更有效。
图片是XNA课,对吗?我不太了解这一点,但你可以尝试类似的东西:
public Picture GetPictureDimension(Stream inputStream, ref Picture picture)
{
var img = new MagickNet.Image(inputStream);
picture = new Picture(img); // just guessing here
//picture.Width = img.Columns;
//picture.Height = img.Rows;
return picture;
}