---
name: "pfsoutppm"
section: "1"
platform: "linux"
package: "pfstools"
version: "2.2.0-9"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pfsoutppm"
---

# pfsoutppm(1)

Write images or frames in one of the several formats

## NAME

pfsoutppm, pfsouttiff, pfsoutrgbe, pfsoutexr - Write images or frames in one of the several formats

## SYNOPSIS

**pfsoutppm** (\<file\> \[--srgb\] \[--frames \<range\>\])  \[\<file\>...\]

**pfsouttiff** (\<file\> \[--srgb\] \[--frames \<range\>\])  \[\<file\>...\]

**pfsoutrgbe** (\<file\> \[--frames \<range\>\])  \[\<file\>...\]

**pfsoutexr** (\<file\> \[--frames \<range\>\])  \[\<file\>...\]

## DESCRIPTION

This command can be used to write pfs frames piped to standard input in one of the several recognized formats. See the manual page of pfsinppm to get a list of available formats.

To write images to standard output use a single dash '-' instead of filename.

Each file name can contain a %d pattern, which is substituted with frame numbers. The pattern has the same syntax as C *printf* command. For example, you can use %04d to make the frame number four digit with proceedings zeros. You can select the frames using the following options (the options must be always given after the file name):

- **--frames \<range\>**

  Range is given in mathlab / octave format:

  **startframe:step:endframe**

  Frame numbers start with **startframe** (default 0), are increased by **step** (default 1) and stop at **endframe** You can skip one of those values, for example *1:100* for frames 1,2,...,100 and *0:2:* for frame 0,2,4,... up to the last file that exists.

- **--srgb, -s**

  Apply the sRGB non-linearity (approximately 2.2 gamma) before writing a file. This can be used instead of using *pfsgamma -g 2.2* to store the result of some tone-mapping operators. The option will compress contrast to make sure that tone values are properly shown on a display. It should be only used with linearized (not gamma corrected) images that are normalized to the 0-1 range.

- **--bit-depth** \<val\>, **-b \<val\>**

  **Enforce bit-depth (per color** **channel). The allowed values are from 8 to 32. If not specified, the** **bit depth from the pfs stream ('BITDEPTH' tag) will be used** **instead. If the 'BITDEPTH' tag is missing, the ImageMagick default** **value will be used (usually 16). The bit depth of actually stored file** **may be lower of that specified, if the file format does not support** **higher bit depths.**

## EXAMPLES

- **pfsin memorial.tiff \| pfsoutrgbe memorial.hdr**

  **Converts from one HDR format to another**

- **pfsin test.jpg \| pfsout test.png**

  **Convert from one image format to another.**

- **pfsin --linear test.jpg \| pfsout --srgb test.png**

  **The same as above, but apply inverse gamma correction after reading** **an image (--linear) and then apply gamma correction before writing an** **image (--srgb).**

## SEE ALSO

[**pfsout**(1)](/pfsout/1.md) [**pfsinppm**(1)](/pfsinppm/1.md)

## BUGS

**Writing TIFF files with pfsouttiff seems to be broken, but pfsoutimgmagick** **can be used instead. pfsout will attempt to use pfsoutimgmagick and** **fall back to pfsouttiff if pfstools were not compiled with** **ImageMagick.**

**Please report bugs and comments on implementation to**  **the discussion group http://groups.google.com/group/pfstools**
