Этот документ: http://netpbm.sourceforge.net/doc/ppm.html описывает формат изображения PPM.
Когда значение «magi c» P6
находится в начале файла, цвет пикселей хранится как двоичные данные. Цитата из ранее упомянутого документа (выделено мной):
[...] Растр строк высоты в порядке сверху вниз. Каждая строка состоит из пикселей ширины в порядке слева направо. Каждый пиксель представляет собой тройку образцов красного, зеленого и синего цветов в указанном порядке. Каждая выборка представлена в чистом двоичном формате 1 или 2 байтами . Если Maxval меньше 256, это 1 байт. В противном случае это 2 байта. Самый старший байт - первый.
Файл, показанный спрашивающим, кажется, вместо этого содержит их десятичное текстовое представление.
Итак, строка "\n224 93 229..."
(да, я подозреваю, что windows конечная строка "\r\n"
) интерпретируется как (при условии, что файл был сохранен в формате ASCII) {10, 50, 50}, {50, 32, 32}, {57, 51, 32}, ...
.
Обратите внимание на пиксель blacki sh в середине, который, вероятно, соответствует концу первой строки, он может быть {13, 10, 32}
("\r\n "
).
Если вы измените значение magi c на P3
, оно должно интерпретироваться правильно.