C: 将数组转换为 RGB 图像

Posted

技术标签:

【中文标题】C: 将数组转换为 RGB 图像【英文标题】:C: Convert array to RGB image 【发布时间】:2014-08-24 18:20:48 【问题描述】:

在 C 中,我有一个长度为 3*DIM*DIM 的无符号字符(即 0 到 255 之间)的一维数组,它表示 DIM*DIM 像素图像,其中前 3 个像素是第一个像素的 RGB 级别,第二个 3 像素是第二个像素的 RGB 级别,等等。我想将其保存为 PNG 图像。进行这种转换的最简单、最轻量级的方法是什么?

显然 OpenGL 可以读取和显示这种形式 (GLUT_RGB) 的图像,但 DIM 比我的显示器屏幕的尺寸大,所以不能简单地显示图像并截屏。

目前,我一直在进行转换,只需将数组保存到 CSV 文件,将其加载到 Mathematica 中,然后将其导出为 PNG,但这非常慢(单个 7000 * 约 8 分钟) 7000 像素图像)。

【问题讨论】:

【参考方案1】:

您可以使用许多优秀的第三方库将像素数据数组转换为图片。

libPNG 是一个长期存在的 png 图片标准库。 LodePNG 似乎也是一个不错的候选人。 最后,ImageMagick 是一个很棒的库,支持许多不同的图像格式。

所有这些都支持C,并且相对容易使用。

【讨论】:

LodePNG 似乎是完美的方法;它只是一个 .h 文件!感谢您的参考。在写这个问题之前我也看过 libPNG,但它似乎有点过头了,所以 LodePNG 就是这样。

以上是关于C: 将数组转换为 RGB 图像的主要内容,如果未能解决你的问题,请参考以下文章

将numpy数组转换为rgb图像

将压缩图像转换为 VHDL RGB 数组

如何将 rgb 图像数组从 sws_scale 转换为 DIB(在内存位图中)

使用 OpenCV 将 RGB 图像转换为二进制图像

C++ RGB 图像数据叠加成二维数组(向量的向量)

将 C 源图像转储转换为原始图像