Image 连接非常大的图像

Image 连接非常大的图像,image,concatenation,Image,Concatenation,我试图将1600*900个图像的列表连接为马赛克,但我无法分配一个位图,例如每100k分配100k 所以我在寻找一种方法来创建一个位图文件,并以类似流的方式在上面写入 我该怎么办?多谢各位 尽管100k×100k图像的确切实用价值尚不清楚,但解决方案可能是: 在生成的W×H马赛克中创建源图像的偏移列表。这里有一些计算:100k-x-100k图像只能容纳大约50-x-100图像5k,这是一个合理的数字。因此,在偏移量数组中只需要约5000个元素,这远远不够大。用这个答案http://stackov

我试图将1600*900个图像的列表连接为马赛克,但我无法分配一个位图,例如每100k分配100k

所以我在寻找一种方法来创建一个位图文件,并以类似流的方式在上面写入


我该怎么办?多谢各位

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

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

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

效率低下的部分:将100k-x-100k*bytesperpoixel零写入文件,然后迭代图像,将它们逐个写入该文件

InsertImageToStream是一行一行地完成的,我认为它非常简单


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

是否可以:对于每个图像,缩小图像并仅将缩小的版本存储在内存中?我认为在创建马赛克时,您不需要完全分辨率的图像。您使用的是什么体系结构?100k x 100k 24位彩色位图将占用28GB的内存。能处理如此大量数据的位图文件的具体格式是什么?我已经编写了一个软件,可以用scaledown“镶嵌”主图像,并将缩小后的图像应用到主图像的某个区域。现在我想在主图像上有一个每像素的图像。我正在使用.Net进行实践,然后我将使用cuda(用于nvidia gpu)和/或quicksync(用于intel cpu)或其混合。实际用法:马赛克具有全分辨率分幅,您实际上可以在5月份进行缩放,以便渲染此马赛克您不应该创建这么大的位图吗?只需计算每个平铺左上角的当前坐标并渲染单个图像。此单个平铺渲染仅允许渲染可见平铺,而不允许渲染整个100k-100k图像。我很抱歉,这是一个相当无礼的评论,在几年内,100k乘100k可能不会非常大,但最好还是完全避免创建大位图。