【发布时间】:2012-04-05 16:53:42
【问题描述】:
我在 Delphi 中编写了一个映射程序,用户可以在后台加载我存储在内存中的光栅图像。在一种情况下,用户成功加载了 44MB BMP,但程序运行缓慢,当他们打印(我平铺输出)时,他们得到了资源不足错误。我将 BMP 转换为 PNG (3MB),程序执行得更好,打印作业成功。
既然 PNG 必须扩展为相同大小的 DIB,为什么会有性能/资源差异?如果有的话,加载 PNG 应该需要更多的工作和内存分配。我错过了什么?
由于似乎没有任何明显的答案,我将编写一个小型演示项目,以便进一步研究。
【问题讨论】:
-
您确定 BMP 和 PNG 文件具有相同的像素数和 BitsPerPixel 吗?
-
您使用什么来打印图像?您是直接在 Printer.Canvas 上书写,还是在 QuickReport 或 Rave 等报表上使用组件?
-
Francois:是的,我拿到了客户文件并亲自尝试过。 rkawano:我打印到我发送到打印机画布的 DIB 瓷砖。
-
听起来你自己的某个地方有内存泄漏。