pixscale — change the size of a color pix file


pixscale [-r ] [-s squareinsize] [-w in_width] [-n in_height] [-S squareoutsize] [-W out_width] [-N out_height] [infile.pix] > outfile.pix


pixscale will take a color pix(5) format file of given dimensions and produce a larger or smaller scaled version. The -w and -n flags specify the input file width and number of scan lines in pixels. They can both be set to the same value via -s. Similarly, the -W and -N flags specify the desired output file width and number of scan lines in pixels. They can both be set to the same value via -S. Defaults of 512 are assumed for any unspecified dimensions.

The algorithm used is bilinear interpolation if scaling up, and a box filter of arbitrary size if scaling down. For the box filter a "square pixel" assumption is made; that is, all whole and fractional input pixels falling into a rectangle the size of an output pixel contribute equally according to the fraction of the output pixel area they cover. When interpolating, the edge pixels are preserved, i.e. all of the interpolated pixels fall inside of the edges. This can be a bit surprising when say doubling the size of a file as only the edge pixels will fall at exactly the location of an output pixel.

Specifying the -r flag changes from bilinear interpolation to nearest neighbor interpolation, i.e. it enlarges the image by pixel replication.

For 2X interpolation, a much faster alternative is pixinterp2x(1).


brlcad(1), pixcrop(1), pixrect(1), pixinterp2x(1), pix(5)


This program cannot scale up in one dimension and down in the other at the same time. The box filter used for scaling down results in the usual high-frequency ripple. Optional cubic interpolation would be nice.




This software is Copyright (c) 1989-2016 by the United States Government as represented by U.S. Army Research Laboratory.


Reports of bugs or problems should be submitted via electronic mail to <>.