如何克隆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;
}发布于 2010-02-22 05:30:09
你能重新打开文件吗?但是要保持单个Stream不被关闭,您可以在MiscUtil中尝试NonClosingStreamWrapper。只需确保在适当的时候重置Position即可。
发布于 2010-02-22 05:39:47
你没有发布完整的代码,但我想MagickNet.Image(inputStream)得到了完整的图像,你只使用了其中的大小,然后你第二次加载图像。
因此,更实际的解决方案是获取图像并将其保存在内存中一次。这让你可以访问它的大小。
编辑:
您似乎没有意识到这一点,但您正在询问如何加载Image两次(没有重新打开流)。我确实认为只加载一次会更有效率。
图片是一个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;
}https://stackoverflow.com/questions/2307520
复制相似问题