显示PPM时得到奇怪的结果:
像素显示
(这实际上是一个放大的PNG(
以下是该文件的外观:
文本显示
尺寸很好(10 行,8 列(,只是颜色错误(还是我错了?
正如文件第三行所说,我想为每个通道使用一个从 0 到 255 的值。使用通常的 rgb 颜色空间,例如 (255, 255, 255( 表示白色,(0, 0, 0( 表示黑色,(255, 0, 0( 表示红色等。但是图像中的这些颜色显然与文件中的颜色不同。
乍一看,图像似乎已经变暗了。
我误解了格式吗?文件不是这样解释的吗?
本文档:http://netpbm.sourceforge.net/doc/ppm.html 介绍了 PPM 图像格式。
当在文件开头找到P6
的"魔术"值时,像素的颜色将存储为二进制数据。引用前面提到的文件(强调我的(:
[...]高度行的栅格,按从上到下的顺序排列。每行由宽度像素组成,按从左到右的顺序排列。每个像素都是红色、绿色和蓝色样本的三元组,按此顺序排列。每个样本都以纯二进制表示,由 1 或 2 个字节表示。如果 Maxval 小于 256,则为 1 个字节。否则,它是 2 个字节。最高有效字节是第一个。
提问者显示的文件似乎包含其十进制文本表示形式。
因此,字符串"n224 93 229..."
(是的,我怀疑Windows尾行序列"rn"
(被解释为(假设文件以ASCII格式保存({10, 50, 50}, {50, 32, 32}, {57, 51, 32}, ...
。
注意中间的黑色像素,可能对应于第一行的末尾,它可能是一个{13, 10, 32}
("rn "
(。
如果将魔术值更改为P3
,则应正确解释。