Skip to main content

PnmEncoder

Struct PnmEncoder 

Source
pub struct PnmEncoder<W>
where W: Write,
{ /* private fields */ }
Expand description

Encodes images to any of the pnm image formats.

Implementations§

Source§

impl<W> PnmEncoder<W>
where W: Write,

Source

pub fn new(writer: W) -> PnmEncoder<W>

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.

Source

pub fn with_subtype(self, subtype: PnmSubtype) -> PnmEncoder<W>

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.

Source

pub fn with_header(self, header: PnmHeader) -> PnmEncoder<W>

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.

Source

pub fn with_dynamic_header(self) -> PnmEncoder<W>

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.

Source

pub fn encode<'s, S>( &mut self, image: S, width: u32, height: u32, color: ExtendedColorType, ) -> Result<(), ImageError>
where S: Into<FlatSamples<'s>>,

Encode an image whose samples are represented as a sequence of u8 or u16 data.

If image is a slice of u8, the samples will be interpreted based on the chosen color option. Color types of 16-bit precision means that the bytes are reinterpreted as 16-bit samples, otherwise they are treated as 8-bit samples. If image is a slice of u16, the samples will be interpreted as 16-bit samples directly.

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

Trait Implementations§

Source§

impl<W> ImageEncoder for PnmEncoder<W>
where W: Write,

Source§

fn write_image( self, buf: &[u8], width: u32, height: u32, color_type: ExtendedColorType, ) -> Result<(), ImageError>

Writes all the bytes in an image to the encoder. Read more
Source§

fn set_icc_profile( &mut self, icc_profile: Vec<u8>, ) -> Result<(), UnsupportedError>

Set the ICC profile to use for the image. Read more
Source§

fn set_exif_metadata(&mut self, exif: Vec<u8>) -> Result<(), UnsupportedError>

Set the EXIF metadata to use for the image. Read more

Auto Trait Implementations§

§

impl<W> Freeze for PnmEncoder<W>
where W: Freeze,

§

impl<W> RefUnwindSafe for PnmEncoder<W>
where W: RefUnwindSafe,

§

impl<W> Send for PnmEncoder<W>
where W: Send,

§

impl<W> Sync for PnmEncoder<W>
where W: Sync,

§

impl<W> Unpin for PnmEncoder<W>
where W: Unpin,

§

impl<W> UnsafeUnpin for PnmEncoder<W>
where W: UnsafeUnpin,

§

impl<W> UnwindSafe for PnmEncoder<W>
where W: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more