我必须承认,我从来没有理解过流是关于什么的--我一直认为这是一个互联网的东西。但现在我遇到了一个代码,它使用流来本地加载文件,我想知道使用流是否比...好的,我总是这样加载文件:
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
}与
private void loadingUsingImageClass
{
Image currentPicture = Image.FromFile(originalPath);
}发布于 2010-08-20 17:06:36
如果您知道您的代码将从文件加载数据,请使用Image.FromFile -这显然是相当简单的代码,并且在处理文件时,框架中可能存在优化。
使用流更加灵活,但除非您需要这种灵活性,否则请使用文件解决方案。
发布于 2010-08-20 17:10:44
如果你想处理图像文件,第二种解决方案当然更好。在第一部分中,您知道图像文件并不总是位图,它也可以是Bitmap bitmap = new Bitmap(fileStream); /PNG/TIFF等等。而Image.FromFile在处理具有不同扩展名的图像文件方面非常专业。
一般来说,FileStream在文件问题上很常见,而Image.FromFile在图像文件上更特殊。这取决于您要处理的文件类型。
发布于 2010-08-20 19:06:59
那么,文件通常也被视为流。这就是为什么打开文件的主类被称为FileStream。但是有一个特定的操作系统功能可以使处理图像文件的效率更高。它被称为“内存映射文件”,这是一种将文件内容直接映射到内存的功能。这里面有一些虚构的东西,但它本质上是使文件直接可用,而不必阅读它。存储文件数据所需的内存不会占用分页文件中的空间。
非常高效,当您对.bmp格式的图像使用FromFile()或Bitmap(string)构造函数时,您将免费获得它。从流中加载图像往往需要两倍的内存量,这对于大图像来说总是一个问题。
https://stackoverflow.com/questions/3529485
复制相似问题