在C#中生成巨大的图像

我需要使用PixelFormat.Format24bppRgb编码创建一个巨大的图像(aprox 24000 x 22000)。 我知道打开它几乎是不可能的……

我想要做的是:

Bitmap final = new Bitmap(width, height, PixelFormat.Format24bppRgb); 

正如预期的那样,抛出exception,因为我无法以这种方式处理内存中的11GB文件。

但我有一个想法:我可以在生成文件时编写文件吗? 所以,我不会在RAM上工作,而是在研究HD。

只是为了更好地解释:我有大约13K的瓷砖,我打算在这个愚蠢的文件中将它拼接在一起。 因为我可以按给定顺序迭代它们,所以我可以使用不安全的代码将其直接写入内存。

有什么建议?

ImageMagick的大图像支持 (tera-pixel)可以帮助您在构成图像后将图像放在一起。 您可以使用命令行并使用此包装器向其发出命令,也可以将此ImageMagick.NET用作API。

您可以使用非压缩格式(如BMP)编写它。 BMP将原始颜色字节保存在行中。 因此,您将加载第一行切片,读取其单独的像素行,并将其作为输出图像中的复合单行写入。 这样,您只能打开几个图块并立即记下输出图像。

但我不知道如何将其写为压缩图像,如JPG或PNG。 但我确信有一些专门的软件存在。

完成后,根据您对此图像的意图,我建议将其分为4并以此方式使用它。 我使用了10,000 x 10,000像素而没有抛出OOMexception。