pamendian - reverse endianness of a Netpbm image
This program is part of Netpbm(1).
All Netpbm formats that have samples in pure binary format with multiple bytes are defined to have them in big endian (most significant byte first) order. However, there exist variations on these formats, primarily developed before official multibyte Netpbm formats existed, that are identical to Netpbm formats in every respect except that samples are in little endian (least significant byte first) order.
pamendian reverses the byte order of the sample to convert between the two formats. If the input is true PAM, PGM, or PPM, the output is the little endian variation on that format, and vice versa.
The X Window System viewer xv expects the little endian variation of PGM and PPM.
Programs that come with the Independent Jpeg Group's JPEG library are known to use the little endian variation of PGM and PPM.
The reason some programs use this variant is that at one time during Netpbm's dark age(1), there was a version of Netpbm around that used it. But it was never formally specified.
This program takes input only on Standard Input. Its output is always on Standard Output.
You should never have to use this program with images generated by programs in the Netpbm package or programs that use the Netpbm libraries. If you do, that probably means something needs to be fixed in those programs. The Netpbm converter for any graphics format that represents numbers in little endian form should properly reverse the bytes to create correct Netpbm output.
If you create a Netpbm image from a generic stream of samples, using rawtopgm or rawtoppm, use options on those programs to declare the endianness of your input, thus creating correct endianness in your PGM or PPM output.