PPM 错误的颜色显示

PPM wrong color display

我在显示 PPM 时得到奇怪的结果:

pixeldisplay

(这实际上是一个放大的 PNG)

文件如下所示:

textdisplay

尺寸没问题(10 行,8 列),只是颜色不对(或者我错了?)。

如文件第 3 行所述,我想为每个通道使用 0 到 255 之间的值。使用常用的 rgb 颜色 space,例如 (255, 255, 255) 表示白色,(0, 0, 0) 表示黑色,(255, 0, 0) 表示红色,等等。但是图像中的那些颜色显然与文件中的颜色不一样。

乍一看,图像似乎太暗了。

我对格式有误解吗?文件不是这样解释的吗?

此文档:http://netpbm.sourceforge.net/doc/ppm.html 描述了 PPM 图像格式。

当在文件开头找到 "magic" 值 P6 时,像素的颜色将存储为二进制数据。引用前面提到的文件(强调我的):

[...] A raster of Height rows, in order from top to bottom. Each row consists of Width pixels, in order from left to right. Each pixel is a triplet of red, green, and blue samples, in that order. Each sample is represented in pure binary by either 1 or 2 bytes. If the Maxval is less than 256, it is 1 byte. Otherwise, it is 2 bytes. The most significant byte is first.

提问者显示的文件似乎包含他们的十进制文本表示。

所以,字符串"\n224 93 229..."(是的,我怀疑windows结尾序列"\r\n")被解释为(假设文件以ASCII格式保存){10, 50, 50}, {50, 32, 32}, {57, 51, 32}, ....

注意中间的黑色像素,可能对应第一行的末尾,可能是{13, 10, 32} ("\r\n ").

如果将魔法值更改为 P3,应该可以正确解释它。