1

我正在尝试将 1600*900 图像的列表连接为马赛克,但我无法分配(例如)每 100k 100k 的位图。

因此,我正在寻找一种方法来创建位图文件并以类似流的方式在其上写入。

我能怎么做?谢谢你。

4

1 回答 1

0

虽然 100k x 100k 图像的确切实用价值尚不清楚,但解决方案可能是:

  1. 在生成的 W-by-H 马赛克中创建源图像的偏移列表。这里的一些计算:100k×100k 图像可以容纳大约 50×100 图像(仅 5k,一个合理的数字)。因此,您只需要偏移数组中的约 5000 个元素,这远非大。使用这个答案(http://stackoverflow.com/questions/8762569/how-is-2d-bin-packing-achieved-programmatically/10339522)来计算这些偏移量。

  2. 将图像头写入文件流(例如,参见 .BMP 格式的 54 字节头)

  3. “低效”部分:将 (100k-by-100k)*BytesPerPixel 零写入文件,然后逐一迭代将图像写入此文件。

InsertImageToStream() 是逐行完成的,我认为它非常简单。

第 3 步的优化:当 offsets[] 数组按 Y 排序,然后按 X 排序时,您可以优化填充结果图像的每个扫描线,而无需过多的 FileStream.seek() 调用。

于 2012-05-26T14:59:41.960 回答