C# .NET,加载图像

本文关键字:图像 加载 NET | 更新日期: 2023-09-27 18:30:49

我必须组合大约 100 张图像(png 文件)。问题不在于将它们组合在一起,运行得足够快。但是从存储中加载它们最多需要 4 秒。这太长了。

所以我可以使用 TPL 或多个线程,但它仍然太慢了。如何加快速度?不幸的是,将所有图像保存在主存储中不是一种选择。

图像非常小:从4KB到10KB字节

我以这种方式加载图像:

Image img = Image.FromFile(file);

C# .NET,加载图像

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

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

两个想法:

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

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

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