dwww Home | Manual pages | Find package

Pnmcrop User Manual(1)      General Commands Manual      Pnmcrop User Manual(1)

NAME
       pnmcrop - crop a Netpbm image

SYNOPSIS
       pnmcrop

       [-white      |-black      |-sides     |-bg-color=color     |-bg-corner={
       topleft|topright|bottomleft|bottomright} ]

       [-left]

       [-right]

       [-top]

       [-bottom]

       [-margin=pixels]

       [-closeness=closeness_percent]

       [-borderfile=filename]

       [-blank-image={abort|pass|minimize|maxcrop}]

       {[-reportfull]|[-reportsize]}

       [-verbose]

       [pnmfile]

       Minimum unique abbreviation of option is acceptable.  You may use double
       hyphens instead of single hyphen to denote options.  You may  use  white
       space  in  place  of the equals sign to separate an option name from its
       value.

DESCRIPTION
       This program is part of Netpbm(1).

       pnmcrop reads a PBM, PGM, or PPM image as input,  removes  borders  that
       are the background color, and produces the same type of image as output.

       If  you don't specify otherwise, pnmcrop assumes the background color is
       whatever color the top left and right corners of the image  are  and  if
       they are different colors, something midway between them.  You can spec-
       ify that the background is white or black with the -white and -black op-
       tions or make pnmcrop base its guess on all four corners instead of just
       two with -sides.

       By  default,  pnmcrop chops off any stripe of background color it finds,
       on all four sides.  You can tell pnmcrop to remove only specific borders
       with the -left, -right,
         -top, and -bottom options.

       But note that pnmcrop's determination of the background color  is  inde-
       pendent  of which edges you crop, which may not be intuitive.  For exam-
       ple, imagine an image with a blue border at the top and a  black  border
       at  the  bottom  and you say to crop the bottom (-bottom).  You may have
       expected to crop the black border, but you actually won't crop anything,
       because pnmcrop considers the background color to be whatever color  the
       top  two  corners are, which is blue, and there is no blue at the bottom
       of the image.  If you do want pnmcrop to take the background color  from
       the edges being cropped, use -bg-corner.

       If  you  want to leave some border, use the -margin option.  It will not
       only spare some of the border from cropping, but will fill in (with what
       pnmcrop considers the background color) if necessary to get up  to  that
       size.

       If  the  input is a multi-image stream, pnmcrop processes each one inde-
       pendently and produces a multi-image stream as output.  It chooses where
       to crop independently for each image.  So if you start with a stream  of
       images  of  the same dimensions, you may end up with images of differing
       dimensions.  Before Netpbm 10.37 (December 2006),  pnmcrop  ignored  all
       input images but the first.

       If you want to chop a specific amount off the side of an image, use pam-
       cut.

       If  you  want to add different borders after removing the existing ones,
       use pamcat or pamcomp.

OPTIONS
       In addition to the options common to all  programs  based  on  libnetpbm
       (most notably -quiet, see ]8;;index.html#commonoptions\ Common Options]8;;\ ), pnmcrop recognizes the fol-
       lowing command line options:

       -white Take  white  to be the background color.  pnmcrop removes borders
              which are white.

              You may specify at most one of -black, -white, -sides, -bg-color,
              and -bg-corner.

       -black Take black to be the background color.  pnmcrop  removes  borders
              which are black.

              You may specify at most one of -black, -white, -sides, -bg-color,
              and -bg-corner.

       -bg-color=color
              This  tells  pnmcrop  what color is the background - it will crop
              areas of this color.  color is a value that would be used as  the
              ]8;;libnetpbm_image.html#colorname\argument of the pnm_parsecolor() library routine]8;;\ .

              You may specify at most one of -black, -white, -sides, -bg-color,
              and -bg-corner.

              This option was new in Netpbm 10.86 (March 2019).

       -sides Determine  the  background color from the colors of the four cor-
              ners of the input image.  pnmcrop removes borders  which  are  of
              the background color.

              If at least three of the four corners are the same color, pnmcrop
              takes  that  as  the background color.  If not, pnmcrop looks for
              two corners of the same color in the following order, taking  the
              first  found  as  the background color: top, left, right, bottom.
              If all four corners are different colors, pnmcrop assumes an  av-
              erage of the four colors as the background color.

              The  -sides option slows pnmcrop down, as it reads the entire im-
              age to determine the background color in addition to  the  up  to
              three times that it would read it without -sides.

              You may specify at most one of -black, -white, -sides, -bg-color,
              and -bg-corner.

       -bg-corner={topleft|topright|bottomleft|bottomright
              This option indicates a corner which is background.  pnmcrop will
              use  the  color  of  this corner as the background color and crop
              edges of that color.

              You may specify at most one of -black, -white, -sides, -bg-color,
              and -bg-corner.

              This option was new in Netpbm 10.86 (March 2019).

       -left  Remove any left border.

       -right Remove any right border.

       -top   Remove any top border.

       -bottom
              Remove any bottom border.

       -margin=pixels
              Leave pixels pixels of border.  Expand the border to this size if
              necessary.

              This option was new in Netpbm 10.29 (August 2005).

       -closeness=closeness_percent
              Any color in the image that is at least this close to the  opera-
              tive background color is considered to be background.

              You  can  use this if the image has borders that vary slightly in
              color, such as would be the case in  a  photograph.   Consider  a
              photograph  against  a  white  screen.   The  color of the screen
              varies slightly with shading and dirt  and  such,  but  is  still
              quite distinct in color from the subject of the photograph.  pnm-
              crop  will  choose  some particular shade as the background color
              and if you specify an appropriate -closeness value, it will  cor-
              rectly identify all of the screen as background and crop it off.

              To  implement  more complex rules for identifying background, use
              -borderfile.

              The default is zero, which means a  pixel's  color  must  exactly
              match the background color for the pixel to be considered part of
              a background border.

              This  option  was  new  in Netpbm 10.78 (March 2017).  With older
              Netpbm, colors must match exactly.

       -borderfile=filename
              Use the image in the file named filename instead of the input im-
              age to determine where the borders of the input image are and the
              background color.

              Without this option, pnmcrop examines the input image and figures
              out what part of the image is border and what part is  foreground
              (not border), as well as the background color.  With this option,
              pnmcrop  finds the borders in one image, then uses the those four
              border sizes (left, right, top, bottom) in cropping  a  different
              image.  Furthermore, if you use -margin to add borders, the color
              of  those  borders is the background color pnmcrop detects in the
              border file.

              The point of this is that you may want to help pnmcrop to come to
              a different conclusion as to where the borders are and  what  the
              background  color is by preprocessing the input image.  For exam-
              ple, consider an image that has speckles of noise in its borders.
              pnmcrop isn't smart enough to recognize these as noise;  it  sees
              them as foreground image.  So pnmcrop considers most of your bor-
              ders to be foreground and does not crop them off as you want.  To
              fix this, run the image through a despeckler such as pbmclean and
              tell  pnmcrop  to  use the despeckled version of the image as the
              -borderfile image, but the original speckled version as the input
              image.  That way, you crop the borders, but retain the true fore-
              ground image, speckles and all.

              The border file must have the same number of images in it as  the
              input file; the background color determination for image N of the
              input is based on the image N of the border file.

              This option was new in Netpbm 10.29 (August 2005).

              Before  Netpbm 10.46 (March 2009), the original image and not the
              border file determines the background color.   pnmcrop  fails  if
              there is no apparent background color in the original image (i.e.
              the corners of the image don't have a common color).

       -blank-image={abort|pass|minimize|maxcrop}
              This determines how pnmcrop handles an image which is entirely
                background  (blank),  a  case  where cropping doesn't make much
              sense.

       abort

              program fails, with explanatory message (default)

       pass

              Output image is the same as the input image.
                    -margin has no effect.

       minimize

              output is a single row,  column,  or  pixel  (of  the  background
              color).
                    If you crop both vertically and horizontally (the default),
              it is a
                    single  pixel.   If you crop only vertically, a single row,
              of the
                    original width.  If you crop only  horizontally,  it  is  a
              single column,
                    of the original height.

              This is a somewhat incongruous result; the mathematically consis-
              tent
                      result  of  cropping the background from an image that is
              entirely
                      background would be an image with no pixels at all.   But
              such a thing
                      does  not  exist  in the Netpbm formats (and you probably
              wouldn't want
                      it anyway, because whoever processes this output may  not
              tolerate
                      that).

              The background can be more than one color when you specify
                    -closeness,  so  it matters which row, column, or pixel re-
              mains.
                    If you crop on the top and not bottom, it is the  last  row
              that remains.
                    If  you  crop  on both the top and bottom, it is the middle
              row that
                    remains.  The other cases follow similarly.

              If you specify a margin (-margin), the output image consists
                      entirely of the margins; there is no single row,  column,
              or pixel
                      between the margins.  So with -margin, the incongruity
                      mentioned  above does not exist.  But before Netpbm 10.92
              (September
                      2020), -margin was ignored with -blank-image=minimize.

       maxcrop

              This odd function selects a hypothetical cropping  which  is  not
              even
                    possible, and therefore is valid only with -reportfull or
                    -reportsize.   The  cropping that this selects is a crop of
              the
                    entire image on every side on which you  request  cropping.
              So if you
                    request  cropping only on the left, of a 600 pixel wide im-
              age, this
                    selects a cropping of 600 pixels from  the  left  and  none
              from the other
                    three  sides.   Note  that  were this cropping actually ap-
              plied, this would
                    produce an image with no  pixels,  which  is  not  a  valid
              Netpbm image.  But
                    it  gets stranger still if you request cropping on both the
              right and the
                    left.  In that case, the cropping selected is a cropping of
              600 pixels
                    from both the right and left sides,  which  would  leave  a
              negative-width
                    image.

                    This  is actually useful if you are trying to find a single
              set of
                    cropping parameters to crop a  stream  of  images.   To  do
              this, you could
                    do a pass with -reportsize and -blank-image=maxcrop to
                    compute  the maximum crop for each edge, and then use those
              numbers in
                    -cropxxx options on a pamcut pass to do the crop.
                    In this scenario, any all-background (blank)  images  would
              have no effect
                    on  the  cropping  parameters you compute.  If you do this,
              you must give
                    special consideration to a stream with  nothing  but  blank
              images.

              -margin is always ignored when the image is all background.

              This option was new in Netpbm 10.86 (March 2019).

       -reportfull
              With  this  option, pnmcrop does not actually crop anything.  In-
              stead, it just prints to Standard Output parameters of the  crop-
              ping  it would have done.  The output is a single line per image,
              like in this example:

                   0 +7 -20 -10 200 300 rgb-255:10/0/255 0.0

              The line is composed of the following blank-delimited tokens:

       •      how many pixels would be cropped or padded on the left.  This is
                  a signed decimal number, where + means pad and - means  crop.
              If there
                  would be no change, this is unsigned zero.

       •      same, but for the right side.

       •      same, but for the top.

       •      same, but for the bottom.

       •      the resulting image width in pixels, in decimal.

       •      the resulting image height in pixels, in decimal.

       •      The color pnmcrop took to be the background color, like
                 'rgb-255:10/0/255' (This is a format recognized by
                 the ]8;;libnetpbm_image.html#colorname\pnm_parsecolor()]8;;\
                 library  routine).   The  maxval in the color specification is
              the maxval of
                 the image.

       •      The closeness value (see -closeness option) pnmcrop
                 used, in floating point decimal.

              You cannot use -borderfile together with this option.

              This option was new in Netpbm 10.86 (March 2019).

       -reportsize
              This is like -reportfull, but reports only the left, right,  top,
              bottom, width, and height.

              You cannot use -borderfile together with this option.

              This option was new in Netpbm 10.86 (March 2019).

       -verbose
              Print on Standard Error information about the processing, includ-
              ing exactly how much is being cropped off of which sides.

SEE ALSO
       pamcut(1), pamfile(1), pnm(1)

AUTHOR
       Copyright (C) 1989 by Jef Poskanzer.

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/pnmcrop.html

netpbm documentation             16 August 2020          Pnmcrop User Manual(1)

Generated by dwww version 1.16 on Tue Dec 16 03:55:31 CET 2025.