c#.net,加载图片

时间:2012-04-10 13:12:53

标签: c# image-processing .net

我必须结合使用大约100个图像(png文件)。 问题不在于它们的组合,运行得足够快。 但是从存储中加载它们需要4秒。 那是太多的时间了。

所以我可以使用TPL或多线程,但它仍然太慢。 我怎样才能加快速度?不幸的是,将所有图像保存在主存储器中是不可取的。

图像非常小:从4KByte到10KByte

我正在加载图片:

Image img = Image.FromFile(file);

3 个答案:

答案 0 :(得分:3)

在您的情况下,创建多个线程不会提高I / O速度。这是关于你的硬盘的读写速度。

在4秒内加载100张高质量图像似乎很正常。

答案 1 :(得分:1)

两个想法:

  • 如果大部分延迟确实来自IO,请压缩文件。根据其内容,即使简单的ZIP压缩也可以减小其大小,从而减少读取的字节数。工作将是在内存中解压缩它们。我不知道这是否适用于你的案件

  • 懒惰加载它们。您是否需要一直加载所有100张图片?也许您可以先加载第一个,或者最重要的一个,让软件在完成后台加载剩余图像时执行其他操作。

答案 2 :(得分:0)

如何加载图像文件?请分享一段代码。我的猜测是你不是一次读取整个文件,而是像EOF一样逐字节地读取...优化文件加载的一种方法是将整个文件加载到预分配的内存缓冲区。