# [−][src]Struct image::pnm::PNMEncoder

    pub struct PNMEncoder<W: Write> { /* fields omitted */ }

Encodes images to any of the `pnm` image formats.

## Methods

### `impl<W: Write> PNMEncoder<W>`[src]

#### `pub fn new(writer: W) -> Self`[src]

Create new PNMEncoder from the `writer`.

The encoded images will have some `pnm` format. If more control over the image type is required, use either one of `with_subtype` or `with_header`. For more information on the behaviour, see `with_dynamic_header`.

#### `pub fn with_subtype(self, subtype: PNMSubtype) -> Self`[src]

Encode a specific pnm subtype image.

The magic number and encoding type will be chosen as provided while the rest of the header data will be generated dynamically. Trying to encode incompatible images (e.g. encoding an RGB image as Graymap) will result in an error.

This will overwrite the effect of earlier calls to `with_header` and `with_dynamic_header`.

#### `pub fn with_header(self, header: PNMHeader) -> Self`[src]

Enforce the use of a chosen header.

While this option gives the most control over the actual written data, the encoding process will error in case the header data and image parameters do not agree. It is the users obligation to ensure that the width and height are set accordingly, for example.

Choose this option if you want a lossless decoding/encoding round trip.

This will overwrite the effect of earlier calls to `with_subtype` and `with_dynamic_header`.

#### `pub fn with_dynamic_header(self) -> Self`[src]

Create the header dynamically for each image.

This is the default option upon creation of the encoder. With this, most images should be encodable but the specific format chosen is out of the users control. The pnm subtype is chosen arbitrarily by the library.

This will overwrite the effect of earlier calls to `with_subtype` and `with_header`.

#### `pub fn encode<'s, S>(
&mut self,
image: S,
width: u32,
height: u32,
color: ColorType
) -> Result<()> where
S: Into<FlatSamples<'s>>,` [src]

Encode an image whose samples are represented as `u8`.

Some `pnm` subtypes are incompatible with some color options, a chosen header most certainly with any deviation from the original decoded image.

## Auto Trait Implementations

### `impl<W> Send for PNMEncoder<W> where
W: Send,`

### `impl<W> Unpin for PNMEncoder<W> where
W: Unpin,`

### `impl<W> Sync for PNMEncoder<W> where
W: Sync,`

### `impl<W> UnwindSafe for PNMEncoder<W> where
W: UnwindSafe,`

### `impl<W> RefUnwindSafe for PNMEncoder<W> where
W: RefUnwindSafe,`

## Blanket Implementations

### `impl<T, U> Into<U> for T where
U: From<T>,` [src]

#### `fn into(self) -> U`[src]

Performs the conversion.

### `impl<T> From<T> for T`[src]

#### `fn from(t: T) -> T`[src]

Performs the conversion.

### `impl<T, U> TryFrom<U> for T where
U: Into<T>,` [src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

#### `fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`[src]

Performs the conversion.

### `impl<T, U> TryInto<U> for T where
U: TryFrom<T>,` [src]

#### `type Error = <U as TryFrom<T>>::Error`

The type returned in the event of a conversion error.

#### `fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`[src]

Performs the conversion.

### `impl<T> BorrowMut<T> for T where
T: ?Sized,` [src]

#### `fn borrow_mut(&mut self) -> &mut T`[src]

Mutably borrows from an owned value. Read more

### `impl<T> Borrow<T> for T where
T: ?Sized,` [src]

#### `fn borrow(&self) -> &T`[src]

Immutably borrows from an owned value. Read more

### `impl<T> Any for T where
T: 'static + ?Sized,` [src]

#### `fn type_id(&self) -> TypeId`[src]

Gets the `TypeId` of `self`. Read more

### `impl<T> SetParameter for T`[src]

#### `fn set<T>(&mut self, value: T) -> <T as Parameter<Self>>::Result where
T: Parameter<Self>,` [src]

Sets `value` as a parameter of `self`.

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)