All options can be abbreviated to their shortest unique prefix. You may use two hyphens instead of one to designate an option. You may use either white space or an equals sign between an option name and its value.
This program is part of Netpbm.
pamflip flips a PAM or PNM image top for bottom or left for right, or transposes it horizontal for vertical, or rotates it 1, 2, or 3 quarter turns.
To rotate at other angles, use pnmrotate. It is much slower, though.
The input image is pamfile, or Standard Input if pamfile is not specified.
To flip/rotate a JFIF (JPEG) image losslessly, use jpegtran. jpegtran is part of the Independent Jpeg Group's compression library package, not part of Netpbm. The normal Netpbm way to flip a JFIF file would be to convert it to PNM, use pamflip, and convert back to JFIF. But since JPEG compression is lossy, the resulting image would have less quality than the original. jpegtran, on the other hand, can do this particular transformation directly on the compressed data without loss.
You must supply exactly one of the following options:
pamflip's predecessor (before Netpbm 10.7 - August 2002) pnmflip did not have the -xform option and instead allowed you to specify any number of the other options, including zero. It applied all the indicated transformations, in the order given, just like with pamflip's -xform option. (Reason for the change: this kind of interpretation of options is inconsistent with the rest of Netpbm and most of the Unix world, and thus hard to understand and to implement).
This option was new in Netpbm 10.13 (December 2002).
This option was new in Netpbm 10.13 (December 2002).
The following options help pamflip use memory efficiently. Some flipping operations on very large images can cause pamflip to have a very large working set, which means if you don't have enough real memory, the program can page thrash, which means it takes a ridiculous amount time to run. If your entire image fits in real memory, you don't have a problem. If you're just flipping top for bottom or left for right, you don't have a problem. Otherwise, pay attention. If you're interested in the details of the thrashing problem and how pamflip approaches it, you're invited to read a complete explanation in comments in the source code.
When you specify -memsize and are doing a row for column type of transformation, pamflip does the transformation in multiple passes, each one with a working set size less than the specified value.
If your estimate is even slightly too large, it's the same as infinity. If you estimate too small, pamflip will use more passes than it needs to, and thus will slow down proportional to the underestimate.
If you do not specify -memsize, pamflip assumes infinite real memory and does the entire transformation in one pass.
This option did not exist before Netpbm 10.7 (August 2002).
This option did not exist before Netpbm 10.7 (August 2002).
pamflip replaced pnmflip in Netpbm 10.13 (December 2002). pamflip is backward compatible, but also works on PAM images.