Mit*_*tch 8 delphi graphics png bmp
我在Delphi中编写了一个映射程序,用户可以在后台加载我存储在内存中的光栅图像.在一个案例中,用户成功加载了44MB BMP但程序运行缓慢,当他们打印时(我平铺输出)他们得到了Out Of Resources错误.我将BMP转换为PNG(3MB),程序执行得更好,打印作业也成功.
由于PNG必须扩展到相同大小的DIB,为什么会出现性能/资源差异?如果有什么需要更多的工作和内存分配来加载PNG.我错过了什么?
由于似乎没有任何明显的答案我会写一个小的演示项目,所以我可以进一步研究.
区别在于压缩。
BMP = 原始数据 PNG = 使用“无损”压缩的相同原始数据
这在编程圈中有不止一种节省方式......
平铺意味着您的问题是指数级的,例如......
44MB x 10 块 = 440MB
VS
3MB x 10 块 = 30MB
打印机不喜欢处理大量数据,除了更昂贵的打印机之外,所有打印机都倾向于一次性打印整个文档(例如缓冲整个流)。
因此,用户从您的应用程序中说“打印”……您的代码然后说“对,我要发送 10 份此内容”,打印机开始“缓存”440MB 的原始数据。
最常见的家用打印机依靠电脑进行缓存并打印所提供的内容,但标准办公打印机将进行缓存然后打印文档。
然而......我认为这是一个可选的东西,你可以调整(我认为它随打印机的不同而变化)。
编辑:
以下是游戏编程领域的一些内容:
http://www.gamedev.net/topic/450104-png-vs-bmp/