【发布时间】:2016-09-03 09:34:19
【问题描述】:
我正在尝试创建一个巨大的位图 52000x29250 PixelFormat.Format32bppPArgb,这是不可能的,因为它需要大约 24.3GB 的 RAM。那么我能否以某种方式在片段中创建位图并从这些片段中创建一个巨大的位图?
【问题讨论】:
-
既然你想在最后合并这些位图,你应该想办法不将它加载到内存中,只使用文件流或类似的东西。
我正在尝试创建一个巨大的位图 52000x29250 PixelFormat.Format32bppPArgb,这是不可能的,因为它需要大约 24.3GB 的 RAM。那么我能否以某种方式在片段中创建位图并从这些片段中创建一个巨大的位图?
【问题讨论】:
答案是您永远不需要将位图加载到内存中。只需将其视为字节文件流。构造一个读取器/写入器类来处理实际的位图二进制格式,并使用该读取器/写入器类来寻址位图数据。
这允许您以高效内存的方式构建和处理任意比例的位图。您可以通过增加流缓存来调高和调低性能。
大规模位图处理的关键是像处理数据库一样处理它;没有程序员将整个数据库读入内存;所以你不需要为位图做。
PixelFormat.Format32bppPArgb 位图的格式有据可查,如果您四处搜索,您可能会发现现有的读取器/写入器类。
【讨论】: