如何快速将unsigned char数组保存到图像文件?

时间:2015-06-10 09:21:34

标签: c++ image image-processing

我有一个unsigned char数组,实际上是一个RGBA原始图像。如何将其导出到图像文件?任何图像文件格式都可以。

2 个答案:

答案 0 :(得分:1)

您可以将其直接写成RGBA二进制文件。然后使用ImageMagick,它安装在大多数Linux发行版上,可用于OSX和Windows将其转换为PNG或更常见的东西:

convert -size 300x400 -depth 8 binary.rgba result.png

您需要告诉ImageMagick上面的图像尺寸,因为它们显然没有嵌入到原始文件中,就像它们是带有标题的JPEG或PNG一样。

如果您选择的文件名未以.rgba结尾,则需要在其前面添加RGBA:这样的

convert -size ... RGBA:something.bin result.png

如果您使用的是OSX,我个人认为homebrew是安装ImageMagick的最简单方法......

brew install imagemagick

答案 1 :(得分:0)

我认为最好的办法就是将其保存到.bmp文件中,因为基本上位图是一个(颠倒的)rgba值数组。因此,您只需编写一个简单的标题,然后逐行将其写入文件。

对于标题,您必须先写入文件标题,然后才有DIB标题。有多种选择,但我建议使用simple one

位图格式支持许多花哨的东西,但大多数是可选的,并且你的建议没有必要。