pixrot — rotate, invert, or reverse a color pix file
pixrot
[-#bytes ] [-rifb ] [-s squaresize
] [-w in_width
] [-n in_height
] [file.pix
] > newfile.pix
pixrot
will rotate, invert, or reverse a color
pix(5)
format file or read from standard input if a file name is not given. The
-w
and
-n
flags specify the input file width and number of scan lines in pixels;
they can be set to the same value via
-s
.
The
-r
flag reverses the scan lines left to right.
The
-i
flag inverts the image top to bottom.
The
-f
and
-b
flag will rotate the image ninety degrees forward or backward respectively.
The sense of the rotation is relative to a first quadrant coordinate
system, i.e. origin lower left, where "forward" means clockwise.
Note that a 180 degree rotation can be obtained by both reversing and inverting.
By default three byte pixels are assumed as in the
pix(5)
format. However, the
-#
bytes
flag can be used to specify some other pixel size, where
bytes
is the number of bytes per pixel. Thus this program
can be used to manipulate rectangles of other data types, such as
an array of floating point numbers, files of text, etc.
A fairly large buffer is kept in memory so that, file size permitting, the entire rotation can occur without seeking on input or output. In any event, the algorithm is designed to process the input sequentially, so that if any seeking is required, it will happen on output only. If these seeks fail, e.g. the output is a pipe, the user will be told that it needs a file on output. A more general solution to this problem would be to see if seeks can be done on input instead, and switch the algorithm to seek on input only.
If the file size is very large, excessive seeking may occur on output and the rotation will take a very long time. More complicated algorithms could remedy this. Rotations of arbitrary angle are not supported.