在C#中生成巨大的图像

Raf*_*ges 7 c# image-processing

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

我想要做的是这样的:

Bitmap final = new Bitmap(width, height, PixelFormat.Format24bppRgb);
Run Code Online (Sandbox Code Playgroud)

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

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

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

有什么建议?

Eup*_*ric 2

您可以将其写入非压缩格式,例如 BMP。BMP 按行保存原始颜色字节。因此,您将加载第一行图块,读取它们单独的像素行并将其写入输出图像中的复合单行。这样,您只需打开几个图块即可立即记下输出图像。

但我不知道如何将其写为压缩图像,例如 JPG 或 PNG。但我确信有一些专门的软件可以做到这一点。