如何克隆FileStream类型?

时间:2010-02-21 21:27:58

标签: c# .net xna clone

如何克隆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;
}

2 个答案:

答案 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;
}