如何在c#中直接将大图像写入bmp文件(不在内存中创建位图对象)?

时间:2012-11-29 10:05:44

标签: c# image bitmap

你好聪明的程序员,

我需要将小图像合并为一个大图像,其尺寸约为7600 x 7600像素。当我在内存中创建它时,需要太多内存,我负担不起。

我认为这样做的好方法是制作缓冲区(对于我想要放入大图像的每张小图片)并直接写入文件(令人兴奋的blob - 在azure上)。有人知道怎么做(任何免费的图书馆?)我搜索谷歌但没有答案(也许是错误的问题 - 我的英语很差)。

2 个答案:

答案 0 :(得分:1)

如果您正在谈论“bmp”文件,可以通过直接以位图文件格式将数据写入文件流来完成此操作。这很简单,实际上“bmp”是最简单的图像格式,所以我怀疑你会遇到什么困难。以下是2篇有用的文章,详细解释了位图文件格式:

BMP file format in Wikipedia

Microsoft Windows Bitmap

答案 1 :(得分:0)

我不知道任何图像库会动态编码为BMP格式,所以我担心你必须实现自己的。 幸运的是,当不使用压缩时,BMP格式非常简单,并且在RLE压缩时不是很困难。它基本上是一个标题,后跟图像像素的原始字节,一行一行。

这意味着您必须加载一行中的所有图像(如果您的目标图像是30 x 40图像,则需要加载30)。除非您的输入图像也是BMP格式,你不介意创建自定义阅读器。

您可以在Google中输入“BMP格式”来获取BMP文件格式(维基百科也有。)