# pnmscalefixed - man(1) - [phpMan]

> **TLDR:** Scale a PNM file quickly with possibly reduced quality.
>
- Scale an image such that the result has the specified dimensions:
  `pnmscalefixed {{-w|-width}} {{width}} {{-h|-height}} {{height}} {{path/to/input.pnm}} > {{path/to/output.pnm}}`
- Scale an image such that the result has the specified width, keeping the aspect ratio:
  `pnmscalefixed {{-w|-width}} {{width}} {{path/to/input.pnm}} > {{path/to/output.pnm}}`
- Scale an image such that its width and height is changed by the specified factors:
  `pnmscalefixed {{-xsc|-xscale}} {{x_factor}} {{-ysc|-yscale}} {{y_factor}} {{path/to/input.pnm}} > {{path/to/output.pnm}}`

*Source: tldr-pages*

---

_Pnmscalefixed_ _User_ [_Manual_(1)](https://www.chedong.com/phpMan.php/man/Manual/1/markdown)           General Commands Manual          _Pnmscalefixed_ _User_ [_Manual_(1)](https://www.chedong.com/phpMan.php/man/Manual/1/markdown)

## NAME
       pnmscalefixed - scale a PNM file quickly


## DESCRIPTION
       This program is part of [**Netpbm**(1)](https://www.chedong.com/phpMan.php/man/Netpbm/1/markdown).

       **pnmscalefixed  **is like **pamscale **except that it uses fixed point arithmetic internally instead
       of floating point, which may make it run faster.  In turn, it is less accurate and  may  dis‐
       tort the image.  It also lacks many of the features of **pamscale**.

       Use  the  **pamscale  **user manual with **pnmscalefixed**.  This document only describes the differ‐
       ence.  Avoid any feature mentioned in the **pamscale **manual as not existing before Netpbm 9.9.

       **pnmscalefixed **uses fixed point 12 bit arithmetic.  By contrast, **pamscale **uses floating  point
       arithmetic which on most machines is probably 24 bit precision.  This makes **pnmscalefixed **run
       faster (30% faster in one experiment), but the imprecision can cause distortions at the right
       and bottom edges.

       The  distortion  takes  the  following form: One pixel from the edge of the input is rendered
       larger in the output than the scaling factor requires.  Consequently, the rest of  the  image
       is  smaller than the scaling factor requires, because the overall dimensions of the image are
       always as requested.  This distortion will usually be very hard to see.

       **pnmscalefixed **with the **-verbose **option tells you how much distortion there is.

       The amount of distortion depends on the size of the input image and  how  close  the  scaling
       factor is to an integral 1/4096th.

       If  the scaling factor is an exact multiple of 1/4096, there is no distortion.  So, for exam‐
       ple doubling or halving an image causes no distortion.  But reducing it or enlarging it by  a
       third  would cause some distortion.  To consider an extreme case, scaling a 100,000 row image
       down to 50,022 rows would create an output image with all of the input squeezed into the  top
       50,000 rows, and the last row of the input copied into the bottom 22 rows of output.

       **pnmscalefixed  **could  probably  be modified to use 16 bit or better arithmetic without losing
       anything.  The modification would consist of a single constant in  the  source  code.   Until
       there is a demonstrated need for that, though, the Netpbm maintainer wants to keep the safety
       cushion afforded by the original 12 bit precision.

       **pnmscalefixed **does not have **pamscale**'s **-nomix **option.


## OPTIONS
       In  addition  to  the options common to all programs based on libnetpbm (most notably **-quiet**,
       see [ Common Options](index.html#commonoptions) ), **pnmscalefixed **recognizes the following command line options:



### -xsize

### -width

### -ysize

### -height

### -xscale

### -yscale

### -pixels

### -xysize

### -reduce

              These options determine the scale factors.  See the [**pamscale**(1)](https://www.chedong.com/phpMan.php/man/pamscale/1/markdown) user  manual  for  de‐
              tails.


### -verbose

              Report details of the transformation.



## HISTORY
       **pnmscalefixed  **was  originally **pnmscale**. In Netpbm 9.9 (November 2000) **pnmscale **was rewritten
       to use floating point arithmetic; the former fixed point arithmetic version was renamed  **pnm‐**
       **scalefixed**.


## SEE ALSO
       [**pamscale**(1)](https://www.chedong.com/phpMan.php/man/pamscale/1/markdown), [**pamstretch**(1)](https://www.chedong.com/phpMan.php/man/pamstretch/1/markdown), [**pamstretch-gen**(1)](https://www.chedong.com/phpMan.php/man/pamstretch-gen/1/markdown), [**pbmreduce**(1)](https://www.chedong.com/phpMan.php/man/pbmreduce/1/markdown), [**pbmpscale**(1)](https://www.chedong.com/phpMan.php/man/pbmpscale/1/markdown), [**pamenlarge**(1)](https://www.chedong.com/phpMan.php/man/pamenlarge/1/markdown), **pn‐**
       [**mscale**(1)](https://www.chedong.com/phpMan.php/man/mscale/1/markdown), [**pnm**(1)](https://www.chedong.com/phpMan.php/man/pnm/1/markdown), [**pam**(1)](https://www.chedong.com/phpMan.php/man/pam/1/markdown)

## DOCUMENT SOURCE
       This  manual  page  was  generated by the Netpbm tool 'makeman' from HTML source.  The master
       documentation is at

              **<http://netpbm.sourceforge.net/doc/pnmscalefixed.html>**

netpbm documentation                        01 July 2020                _Pnmscalefixed_ _User_ [_Manual_(1)](https://www.chedong.com/phpMan.php/man/Manual/1/markdown)
