我有一个文件,其中包含一系列固定宽度的 NxM 无符号整数值——我们甚至假设它们是单字节——我想以某种常见的图像文件格式“包装”。最好是可以与流行的图像查看器一起使用的东西;否则使用像 GIMP 这样的图像编辑器。
什么图像格式需要最少的转换工作,即尽可能接近将一些小标题放在原始数据上?
笔记:
- 这是灰度/强度图像 - 没有颜色通道/交错值等。
- 我不在乎图像格式是行优先还是列优先,即图像是否相对于我最初编写数据的顺序出现转置。
我有一个文件,其中包含一系列固定宽度的 NxM 无符号整数值——我们甚至假设它们是单字节——我想以某种常见的图像文件格式“包装”。最好是可以与流行的图像查看器一起使用的东西;否则使用像 GIMP 这样的图像编辑器。
什么图像格式需要最少的转换工作,即尽可能接近将一些小标题放在原始数据上?
笔记:
我刚刚注意到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
很简单。