0

我有一个文件,其中包含一系列固定宽度的 NxM 无符号整数值——我们甚至假设它们是单字节——我想以某种常见的图像文件格式“包装”。最好是可以与流行的图像查看器一起使用的东西;否则使用像 GIMP 这样的图像编辑器。

什么图像格式需要最少的转换工作,即尽可能接近将一些小标题放在原始数据上?

笔记:

  • 这是灰度/强度图像 - 没有颜色通道/交错值等。
  • 我不在乎图像格式是行优先还是列优先,即图像是否相对于我最初编写数据的顺序出现转置。
4

1 回答 1

1

我刚刚注意到Portable Pixmap Formats,其中包括 PGM 格式。我见过的最接近规范的是这个页面

PGM 文件受以下应用程序支持:Eye of Gnome(Linux 上)、IrfanView(Windows 上)、GIMP 等。

以编程方式创建图像文件

如果我理解正确,以下 C 函数应将 OP 的原始数据转换为 PGM 文件:

void write_pgm(FILE* file, size_t width, size_t height, uint8_t* data)
{
    const char magic = "P5"; // for binary graymap
    fprintf(file, "%2s %zu %zu 255\n", magic, width, height);
    fwrite(data, 1, width * height, file);
}

这是 PPM 的类似功能的变体,此处

您可以轻松地将其调整为您喜欢的任何编程语言。

转换文件

因此,假设您已将输出放在磁盘上的文件中。显然,有一个用于制作 PGM 的实用程序:rawtopgm. 这是您的案例的调用:

rawtopgm -bpp 1 -maxval 255 N M my_data_file > out.pgm

或者,利用默认值:

rawtopgm N M my_data_file > out.pgm

很简单。

于 2021-08-29T13:44:19.077 回答