0

我编写了一个处理 tif 文件的服务。该过程的一部分是将多页 tif 拆分为单页。

我在以下行出现内存不足错误:

System.Drawing.Image tiffImage = System.Drawing.Image.FromFile(path);

该服务在未充分利用且有大量可用内存的服务器上运行。

我做了一些研究,人们说如果 tif 不正确(与像素格式有关)可能会发生错误。但是,我使用相同的 tif 文件在我的桌面(调试)上运行代码,并且拆分没有问题。

当我使用以下代码查找内存使用情况时:

Process proc = Process.GetCurrentProcess(); 

消息:-“内存使用情况”+ proc.PrivateMemorySize64

I get the following results :  
12mb - server  
27mb - desktop

这是否意味着服务器上的服务分配了更少的内存?或者这是否意味着服务器上的服务正在使用更少的内存?

任何帮助都会很棒谢谢马丁

4

2 回答 2

0

尽量不要在成像上使用任何微软的东西。如果您的服务只是拆分 tiff 文件,我建议您将 libtiff 与互操作调用或命令行一起使用。

MS 和许多其他图形工具包尝试加载图像。使用 libtiff,您不必加载它,并且可以在拆分前检查标头。

缺点是很难用。

顺便说一句:2003 年,为了对我们的 ICR 引擎进行性能测试,我们使用英特尔 C++ 编译器编译了 libtiff。加载 A3、400 dpi 24 位彩色 tiff 文件,并使用简单的阈值算法将其转换为黑白。在具有 1 GB 内存的 1300 Mhz Intel Xeon CPU 中,这一切花费了 200~ ms。这可能会给你一些数字

于 2012-10-02T12:59:33.190 回答
0

System.Drawing 由 gdiplus.dll 实现。可能是它的不同版本在两台机器上运行。

尝试在 System.Windows.Media.Imaging 中切换到 WPF 成像 API。

于 2012-10-02T11:28:41.453 回答