我正在尝试将1600 * 900图像列表连接为马赛克,但我无法分配(例如)每100k 100k的位图。
所以我正在寻找一种创建位图文件的方法,并以类似流的方式在其上书写。
我该怎么办?谢谢。
答案 0 :(得分:0)
虽然尚未知道100k×100k图像的确切实用价值,但解决方案可能是:
在生成的W-by-H镶嵌中创建源图像的偏移列表。这里的一些计算:100k×100k的图像可以容纳大约50×100的图像(仅5k,合理的数字)。因此,在偏移数组中只需要~5000个元素,这远远不够大。使用此答案(http://stackoverflow.com/questions/8762569/how-is-2d-bin-packing-achieved-programmatically/10339522)计算这些偏移量。
将图像标题写入文件流(例如,参见.BMP格式的54字节标题)
“低效”部分:写入(100k×100k)* BytesPerPixel将零归零到文件,然后迭代将图像逐个写入此文件。
InsertImageToStream()是逐行完成的,我认为这很简单。
步骤3的优化:当偏移[]数组按Y然后按X排序时,您可以最佳地填充结果图像的每条扫描线,而无需过多的FileStream.seek()调用。