# ppmchange(1) - man - phpman

> **TLDR:** Change all pixels of one color in a PPM image to another color.
>
- Exchange the first color in each `oldcolor` - `newcolor` pair with the second color:
  `ppmchange {{oldcolor1 newcolor1 oldcolor2 newcolor2 ...}} {{path/to/input.ppm}} > {{path/to/output.ppm}}`
- Specify how similar colors must be in order to be considered the same:
  `ppmchange -closeness {{percentage}} {{oldcolor1 newcolor1 oldcolor2 newcolor2 ...}} {{path/to/input.ppm}} > {{path/to/output.ppm}}`
- Replace all pixels not specified in the arguments by a color:
  `ppmchange {{-r|-remainder}} {{color}} {{oldcolor1 newcolor1 oldcolor2 newcolor2 ...}} {{path/to/input.ppm}} > {{path/to/output.ppm}}`

*Source: tldr-pages*

---

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



## NAME
       ppmchange - change all pixels of one color to another in a portable pixmap

## SYNOPSIS
       **ppmchange** [ **-closeness** _closeness_percent_ ] [ **-remainder** _remainder_color_ ] [ _oldcolor_ _newcolor_
       ] ...  [_ppmfile_]


## DESCRIPTION
       Reads a portable pixmap as input.  Changes all pixels of _oldcolor_ to _newcolor_.  You may spec‐
       ify  up  to 256 oldcolor/newcolor pairs on the command line.  **ppmchange** leaves all colors not
       mentioned unchanged, unless you specify the **-remainder** option, in which  case  they  are  all
       changed to the single specified color.

       You  can specify that colors similar, but not identical, to the ones you specify get replaced
       by specifying a "closeness" factor.


       The colors can be specified in five ways:

       o      A name, assuming that a pointer to an X11-style color names file was compiled in.

       o      An X11-style hexadecimal specifier: rgb:r/g/b, where r g and b are each 1- to  4-digit
              hexadecimal numbers.

       o      An X11-style decimal specifier: rgbi:r/g/b, where r g and b are floating point numbers
              between 0 and 1.

       o      For backwards compatibility,  an  old-X11-style  hexadecimal  number:  #rgb,  #rrggbb,
              #rrrgggbbb, or #rrrrggggbbbb.

       o      For  backwards compatibility, a triplet of numbers separated by commas: r,g,b, where r
              g and b are floating point numbers between 0 and 1.  (This style was added before  MIT
              came up with the similar rgbi style.)

              If a pixel matches two different _oldcolor_s, **ppmchange** replaces it with the _newcolor_ of
              the leftmost specified one.



## OPTIONS
### -closeness
              _closeness_ is an integer per centage indicating how close to the color you specified  a
              pixel must be to get replaced.  By default, it is 0, which means the pixel must be the
              exact color you specified.

              A pixel gets replaced if the distance in color between it and the color you  specified
              is less than or equal to _closeness_.

              The  "distance" in color is defined as the cartesian sum of the individual differences
              in red, green, and blue intensities between the two pixels,  normalized  so  that  the
              difference between black and white is 100%.

              This is probably simpler than what you want most the time.  You probably would like to
              change colors that have similar chrominance, regardless of  their  intensity.   So  if
              there's  a red barn that is variously shadowed, you want the entire barn changed.  But
              because the shadowing significantly changes the color according  to  **ppmchange**'s  dis‐
              tance  formula,  parts  of  the barn are probably about as distant in color from other
              parts of the barn as they are from green grass next to the barn.

              Maybe **ppmchange** will be enhanced some day to do chrominance analysis.


### -remainder
              **ppmchange** changes all pixels which are not of a color for which  you  specify  an  ex‐
              plicit replacement color on the command line to color _color_.

              An example application of this is

              **ppmchange** **-remainder=black** **red** **red**

              to lift only the red portions from an image, or

              **ppmchange** **-remainder=black** **red** **white** **|** **ppmtopgm**

              to create a mask file for the red portions of the image.


## SEE ALSO
       [**pgmtoppm**(1)](https://www.chedong.com/phpMan.php/man/pgmtoppm/1/markdown), [**ppmcolormask**(1)](https://www.chedong.com/phpMan.php/man/ppmcolormask/1/markdown), [**ppm**(5)](https://www.chedong.com/phpMan.php/man/ppm/5/markdown)


## AUTHOR
       Wilson  H.  Bent. Jr. (<whb@usc.edu>) with modifications by Alberto Accomazzi (<alberto@cfa.har>‐
       vard.edu)



                                           07 January 2001                              [ppmchange(1)](https://www.chedong.com/phpMan.php/man/ppmchange/1/markdown)
