bwscale — change the size of a black and white bw file


bwscale [-r ] [-s squareinsize] [-w in_width] [-n in_height] [-S squareoutsize] [-W out_width] [-N out_height] [] >


bwscale will take a black and white bw(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 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 be set to the same value via -S. Defaults of 512 are assumed for any unspecified dimensions.

By default, 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 doubling the size of a file, for example, 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.


brlcad(1), bwcrop(1), bwrect(1), bw(5), pixscale(1)


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.




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