Provided by: netpbm_10.97.00-2_amd64 bug

NAME

       pamfix - repair a Netpbm image with various corruptions

SYNOPSIS

       pamfix

       [-truncate] [-changemaxval] [-clip] [-verbose]

       [netpbmfile]

       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).

       pamfix  reads  a  stream  that  is  mostly  a  Netpbm  image but may have certain types of
       corruptions and produces a valid Netpbm image that preserves much of  the  information  in
       the original.

       In particular, Netpbm salvages streams that are truncated and that contain illegally large
       sample values.

       pamfix looks at only on the first image in a multi-image stream.

   Truncated Stream
       This is a stream that is missing the last part.   Netpbm  corrects  this  by  creating  an
       output image that simply has fewer rows.

       You select this kind of repair with a -truncate option.

       The  header of a Netpbm image implies how large the image must be (how many bytes the file
       must contain).  If the file is actually smaller than that, a Netpbm program that tries  to
       read  the  image  fails, with an error message telling you that it couldn't read the whole
       file.  The data in the file is arranged in row order, from top to  bottom,  and  the  most
       common  reason for the file being smaller than its header says it should be is because the
       bottommost rows are simply missing.  So pamfix assumes that is the case  and  generates  a
       new  image  with  just  the rows that are readable.  (technically, that means the output's
       header indicates a smaller number of rows and omits any partial last row).

       The most common way for a Netpbm file to  be  small  is  that  something  interrupted  the
       program  that  generated  it  before  it  was finished writing the file.  For example, the
       program ran out of its own input or encountered a bug or ran out  of  space  in  which  to
       write the output.

       Another  problem pamfix deals with is where the file isn't actually too small, but because
       of a system error, a byte in the middle of it cannot be read  (think  of  a  disk  storage
       failure).   pamfix  reads  the input sequentially until it can't read any further, for any
       reason.  So it treats such an image as a  truncated  one,  ignoring  all  data  after  the
       unreadable byte.

       But  be  aware  that  an image file is sometimes too small because of a bug in the program
       that generated it, and in that case it is not simply a matter of the bottom of  the  image
       missing, so pamfix simply creates a valid Netpbm image containing a garbage picture.

       If  you  want  to  test  an  image  file to see if it is corrupted by being too small, use
       pamfile --allimages .  It fails with an error message if the file is too small.

       If you want to cut the bottom off a valid Netpbm image, use pamcut.

   Excessive Sample Value
       This is a stream that contains a purported sample value that is higher than the maxval  of
       the image.

       The  header  of  a Netpbm image tells the maxval of the image, which is a value that gives
       meaning to all the sample values in the raster.  The sample values represent a fraction of
       the maxval, so a sample value that is greater than the maxval makes no sense.

       A  regular Netpbm program fails if you give it input that contains a value larger than the
       maxval where a sample value belongs.

       pamfix has three ways of salvaging such a stream:

       •      Clip to the maxval.  Request this with -clip.

       •      Raise the maxval, thus lowering the fraction represented by  every  sample  in  the
              image.  Request this with -changemaxval.

       •      Truncate  the image at the first invalid sample value.  Request this with -truncate
              and neither -clip nor -changemaxval.

       You cannot specify both -clip and -changemaxval.

OPTIONS

       In addition to the options common to all programs based on libnetpbm (most notably -quiet,
       see
        Common Options ⟨index.html#commonoptions⟩ ), pamfix recognizes the following command line
       options:

       -truncate
              Create a truncated output image from all the valid input rows that could be read.

       -changemaxval
              Raise the maxval to cope with pixel values that exceed the  maxval  stated  in  the
              header of the input file.

       -clip  Change  all  pixel  values that exceed the maxval stated in the header of the input
              file.

       -verbose
              Report details of the transportation to standard error.

SEE ALSO

       pnm(1), pam(1), pamcut(1), pamfile(1), pamvalidate(1)

HISTORY

       pamfix was new in Netpbm 10.66 (March 2014).  But it grew out of  pamfixtrunc,  which  was
       new  in Netpbm 10.38 (March 2007) and did only the truncated image repair (and for invalid
       sample values would simply pass them through to its output, generating an  invalid  Netpbm
       image).

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