Struct image::codecs::pnm::PnmEncoder
source · pub struct PnmEncoder<W: Write> {
writer: W,
header: HeaderStrategy,
}
Expand description
Encodes images to any of the pnm
image formats.
Fields§
§writer: W
§header: HeaderStrategy
Implementations§
source§impl<W: Write> PnmEncoder<W>
impl<W: Write> PnmEncoder<W>
sourcepub fn new(writer: W) -> Self
pub fn new(writer: W) -> Self
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
.
sourcepub fn with_subtype(self, subtype: PnmSubtype) -> Self
pub fn with_subtype(self, subtype: PnmSubtype) -> Self
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
.
sourcepub fn with_header(self, header: PnmHeader) -> Self
pub fn with_header(self, header: PnmHeader) -> Self
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
.
sourcepub fn with_dynamic_header(self) -> Self
pub fn with_dynamic_header(self) -> Self
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
.
sourcepub fn encode<'s, S>(
&mut self,
image: S,
width: u32,
height: u32,
color: ColorType,
) -> ImageResult<()>where
S: Into<FlatSamples<'s>>,
pub fn encode<'s, S>(
&mut self,
image: S,
width: u32,
height: u32,
color: ColorType,
) -> ImageResult<()>where
S: Into<FlatSamples<'s>>,
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.
sourcefn write_dynamic_header(
&mut self,
image: FlatSamples<'_>,
width: u32,
height: u32,
color: ExtendedColorType,
) -> ImageResult<()>
fn write_dynamic_header( &mut self, image: FlatSamples<'_>, width: u32, height: u32, color: ExtendedColorType, ) -> ImageResult<()>
Choose any valid pnm format that the image can be expressed in and write its header.
Returns how the body should be written if successful.
sourcefn write_subtyped_header(
&mut self,
subtype: PnmSubtype,
image: FlatSamples<'_>,
width: u32,
height: u32,
color: ExtendedColorType,
) -> ImageResult<()>
fn write_subtyped_header( &mut self, subtype: PnmSubtype, image: FlatSamples<'_>, width: u32, height: u32, color: ExtendedColorType, ) -> ImageResult<()>
Try to encode the image with the chosen format, give its corresponding pixel encoding type.
sourcefn write_with_header(
writer: &mut dyn Write,
header: &PnmHeader,
image: FlatSamples<'_>,
width: u32,
height: u32,
color: ExtendedColorType,
) -> ImageResult<()>
fn write_with_header( writer: &mut dyn Write, header: &PnmHeader, image: FlatSamples<'_>, width: u32, height: u32, color: ExtendedColorType, ) -> ImageResult<()>
Try to encode the image with the chosen header, checking if values are correct.
Returns how the body should be written if successful.
Trait Implementations§
source§impl<W: Write> ImageEncoder for PnmEncoder<W>
impl<W: Write> ImageEncoder for PnmEncoder<W>
source§fn write_image(
self,
buf: &[u8],
width: u32,
height: u32,
color_type: ColorType,
) -> ImageResult<()>
fn write_image( self, buf: &[u8], width: u32, height: u32, color_type: ColorType, ) -> ImageResult<()>
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> UnwindSafe for PnmEncoder<W>where
W: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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