# phpman > man > rawtopgm(1)

> **TLDR:** Convert a raw greyscale image to a PGM image.
>
- Convert a raw greyscale image to a PGM image:
  `rawtopgm {{width}} {{height}} {{path/to/image.raw}} > {{path/to/output.pgm}}`
- Convert a raw greyscale image to a PGM image, assume the image to be a square:
  `rawtopgm {{path/to/image.raw}} > {{path/to/output.pgm}}`
- Convert a raw greyscale image in which the pixels come bottom-first instead of top-first to a PGM image:
  `rawtopgm {{width}} {{height}} {{-bt|-bottomfirst}} {{path/to/image.raw}} > {{path/to/output.pgm}}`
- Ignore the first `n` bytes of the specified file:
  `rawtopgm {{width}} {{height}} {{-h|-headerskip}} {{n}} {{path/to/image.raw}} > {{path/to/output.pgm}}`
- Ignore the last m bytes of each row in the specified file:
  `rawtopgm {{width}} {{height}} {{-r|-rowskip}} {{m}} {{path/to/image.raw}} > {{path/to/output.pgm}}`
- Specify the maxval for the grey values in the input to be equal to `n`:
  `rawtopgm {{width}} {{height}} {{-m|-maxval}} {{n}} {{path/to/image.raw}} > {{path/to/output.pgm}}`
- Specify the number of bytes that represent each sample in the input and that the byte-sequence is to be interpreted as little-endian:
  `rawtopgm {{width}} {{height}} -bpp {{1|2}} {{-l|-littleendian}} {{path/to/image.raw}} > {{path/to/output.pgm}}`

*Source: tldr-pages*

---

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



## NAME
       rawtopgm - convert raw grayscale bytes into a portable graymap

## SYNOPSIS
       **rawtopgm**  [**-bpp** [**1**|**2**]] [**-littleendian**] [**-maxval** _N_] [**-headerskip** _N_] [**-rowskip** _N_] [**-tb**|**-topbot**‐‐
       **tom**] [_width_ _height_] [_imagefile_]


## DESCRIPTION
       Reads raw grayscale values as input.  Produces a PGM file as output.  The input file is  just
       a  sequence  of  pure  binary numbers, either one or two bytes each, either bigendian or lit‐
       tleendian, representing gray values.  They may be arranged either  top  to  bottom,  left  to
       right  or  bottom  to  top,  left to right.  There may be arbitrary header information at the
       start of the file (to which **rawtopgm** pays no attention at all other than the header's size).

       Arguments to **rawtopgm** tell how to interpret the pixels (a function that is served by a header
       in a regular graphics format).

       The  _width_ and _height_ parameters tell the dimensions of the image.  If you omit these parame‐
       ters, **rawtopgm** assumes it is a quadratic image and bases the dimensions on the  size  of  the
       input stream.  If this size is not a perfect square, **rawtopgm** fails.

       When  you don't specify _width_ and _height_, **rawtopgm** reads the entire input stream into storage
       at once, which may take a lot of storage.  Otherwise, **rawtopgm** ordinarily stores only one row
       at a time.

       If you don't specify _imagefile_, or specify **-**, the input is from Standard Input.

       The PGM output is to Standard Output.




## OPTIONS
### -maxval
              _N_  is  the  maxval for the gray values in the input, and is also the maxval of the PGM
              output image.  The default is the maximum value that can be represented in the  number
              of bytes used for each sample (i.e. 255 or 65535).

### -bpp
              tells the number of bytes that represent each sample in the input.  If the value is **2**,
              The most significant byte is first in the stream.

              The default is 1 byte per sample.


### -littleendian
              says that the bytes of each input sample are ordered with the least  significant  byte
              first.  Without this option, **rawtopgm** assumes MSB first.  This obviously has no effect
              when there is only one byte per sample.


### -headerskip
              **rawtopgm** skips over _N_ bytes at the beginning of the stream and reads the image immedi‐
              ately after.  The default is 0.

              This  is useful when the input is actually some graphics format that has a descriptive
              header followed by an ordinary raster, and you don't have a program  that  understands
              the header or you want to ignore the header.


### -rowskip
              If  there  is padding at the ends of the rows, you can skip it with this option.  Note
              that rowskip need not be an integer.  Amazingly, I once had an image with 0.376  bytes
              of  padding  per row.  This turned out to be due to a file-transfer problem, but I was
              still able to read the image.

              Skipping a fractional byte per row means skipping one byte per multiple rows.

### -bt -bottomfirst
              By default, **rawtopgm** assumes the pixels in the input go top to bottom, left to  right.
              If you specify **-bt** or **-bottomfirst**, **rawtopgm** assumes the pixels go bottom to top, left
              to right.  The Molecular Dynamics and Leica confocal format, for example, use the lat‐
              ter arrangement.

              If  you don't specify **-bt** when you should or vice versa, the resulting image is upside
              down, which you can correct with **pnmflip** **.**

              This option causes **rawtopgm** to read the entire input  stream  into  storage  at  once,
              which may take a lot of storage.  Ordinarly, **rawtopgm** stores only one row at a time.

              For  backwards compatibility, **rawtopgm** also accepts **-tb** and **-topbottom** to mean exactly
              the same thing.  The reasons these are named backwards is  that  the  original  author
              thought of it as specifying that the wrong results of assuming the data is top to bot‐
              tom should be corrected by flipping the result top for bottom.  Today, we think of  it
              as simply specifying the format of the input data so that there are no wrong results.


## SEE ALSO
       [**pgm**(5)](https://www.chedong.com/phpMan.php/man/pgm/5/markdown), [**rawtoppm**(1)](https://www.chedong.com/phpMan.php/man/rawtoppm/1/markdown), [**pnmflip**(1)](https://www.chedong.com/phpMan.php/man/pnmflip/1/markdown)


## AUTHORS
       Copyright (C) 1989 by Jef Poskanzer.
       Modified June 1993 by Oliver Trepte, <oliver@fysik4.kth.se>



                                          14 September 2000                              [rawtopgm(1)](https://www.chedong.com/phpMan.php/man/rawtopgm/1/markdown)
