首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加载图片文件Image.FromFile VS FileStream

加载图片文件Image.FromFile VS FileStream
EN

Stack Overflow用户
提问于 2010-08-20 17:03:28
回答 4查看 29.9K关注 0票数 6

我必须承认,我从来没有理解过流是关于什么的--我一直认为这是一个互联网的东西。但现在我遇到了一个代码,它使用流来本地加载文件,我想知道使用流是否比...好的,我总是这样加载文件:

代码语言:javascript
运行
复制
private void loadingfromStream()
{
   DirectoryInfo dirInfo = new DirectoryInfo("c:/");
   FileInfo[] fileInfoArr = dirInfo.GetFiles();
   FileInfo fileInfo = fileInfoArr[0];       

   // creating a bitmap from a stream
   FileStream fileStream = fileInfo.OpenRead();            
   Bitmap bitmap = new Bitmap(fileStream);  
   Image currentPicture = (Image)bitmap       
}

代码语言:javascript
运行
复制
private void loadingUsingImageClass
{    
   Image currentPicture = Image.FromFile(originalPath);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-20 17:06:36

如果您知道您的代码将从文件加载数据,请使用Image.FromFile -这显然是相当简单的代码,并且在处理文件时,框架中可能存在优化。

使用流更加灵活,但除非您需要这种灵活性,否则请使用文件解决方案。

票数 16
EN

Stack Overflow用户

发布于 2010-08-20 17:10:44

如果你想处理图像文件,第二种解决方案当然更好。在第一部分中,您知道图像文件并不总是位图,它也可以是Bitmap bitmap = new Bitmap(fileStream); /PNG/TIFF等等。而Image.FromFile在处理具有不同扩展名的图像文件方面非常专业。

一般来说,FileStream在文件问题上很常见,而Image.FromFile在图像文件上更特殊。这取决于您要处理的文件类型。

票数 3
EN

Stack Overflow用户

发布于 2010-08-20 19:06:59

那么,文件通常也被视为流。这就是为什么打开文件的主类被称为FileStream。但是有一个特定的操作系统功能可以使处理图像文件的效率更高。它被称为“内存映射文件”,这是一种将文件内容直接映射到内存的功能。这里面有一些虚构的东西,但它本质上是使文件直接可用,而不必阅读它。存储文件数据所需的内存不会占用分页文件中的空间。

非常高效,当您对.bmp格式的图像使用FromFile()或Bitmap(string)构造函数时,您将免费获得它。从流中加载图像往往需要两倍的内存量,这对于大图像来说总是一个问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3529485

复制
相关文章

相似问题

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