首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何克隆FileStream类型?

如何克隆FileStream类型?
EN

Stack Overflow用户
提问于 2010-02-22 05:27:58
回答 2查看 2K关注 0票数 3

如何克隆FileStream类型?

问题是,在保存之前,我使用MagickNet.Image(inputStream)来获取图像的扩展,但它似乎关闭了inputStream。

那么,我可以向该函数发送inputStream的克隆,这样该函数就不能编辑真正的inputStream对象了?

这是我的函数:

代码语言:javascript
复制
public Picture GetPictureDimension(Stream inputStream, Picture picture)
{
    var img = new MagickNet.Image(inputStream);

    picture.Width = img.Columns;
    picture.Height = img.Rows;

    return picture;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-22 05:30:09

你能重新打开文件吗?但是要保持单个Stream不被关闭,您可以在MiscUtil中尝试NonClosingStreamWrapper。只需确保在适当的时候重置Position即可。

票数 2
EN

Stack Overflow用户

发布于 2010-02-22 05:39:47

你没有发布完整的代码,但我想MagickNet.Image(inputStream)得到了完整的图像,你只使用了其中的大小,然后你第二次加载图像。

因此,更实际的解决方案是获取图像并将其保存在内存中一次。这让你可以访问它的大小。

编辑:

您似乎没有意识到这一点,但您正在询问如何加载Image两次(没有重新打开流)。我确实认为只加载一次会更有效率。

图片是一个XNA类,对吗?我对此知之甚少,但你可以尝试这样的方法:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2307520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档