连接非常大的图像

时间:2012-05-26 14:34:10

标签: image concatenation

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

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

我该怎么办?谢谢。

1 个答案:

答案 0 :(得分:0)

虽然尚未知道100k×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×100k)* BytesPerPixel将零归零到文件,然后迭代将图像逐个写入此文件。

  4. InsertImageToStream()是逐行完成的,我认为这很简单。

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