pub struct Pnm;
image
only.Expand description
A collection of methods for encoding and decoding PNM bitmap formats.
The PBM (Portable Bitmap), PGM (Portable Graymap), and PPM (Portable Pixmap) formats are part of the Netpbm format family. These formats are simple and straightforward for representing grayscale (PGM), black and white (PBM), and color (PPM) images in either ASCII or binary modes. Here’s a brief overview:
-
PBM (Portable Bitmap Format): Used for black and white images. It supports both ASCII (P1) and binary (P4) representations.
-
PGM (Portable Graymap Format): Used for grayscale images. It also supports ASCII (P2) and binary (P5) representations, with the gray value typically ranging from 0 (black) to 255 (white) for 8-bit images.
-
PPM (Portable Pixmap Format): Used for color images. Similar to PGM, it supports ASCII (P3) and binary (P6) formats. Each pixel is represented by three values (red, green, and blue), each in the range of 0 to 255 for 8-bit images.
Implementations§
Source§impl Pnm
impl Pnm
Sourcepub fn p1_encode_bytes(
bitmap: &[u8],
width: usize,
height: usize,
) -> Result<String>
Available on crate feature alloc
only.
pub fn p1_encode_bytes( bitmap: &[u8], width: usize, height: usize, ) -> Result<String>
alloc
only.Converts a bitmap
of 1-bit bytes into PBM ASCII P1 representation.
Expects a slice of width * height bytes equal to 0
or 1
.
§Errors
Returns InvalidImageSize
if the bitmap
slice doesn’t contain exactly
width
* height
elements, InvalidPixel
if any pixel value is invalid
and FmtError
if the string writing fails.
Sourcepub fn p1_encode_bits(
bitmap: &[u8],
width: usize,
height: usize,
) -> Result<String>
Available on crate feature alloc
only.
pub fn p1_encode_bits( bitmap: &[u8], width: usize, height: usize, ) -> Result<String>
alloc
only.Converts a bitmap
of 1-bit bits into PBM ASCII P1 representation.
Each byte in bitmap
represents 8 pixels, with the most significant bit (MSB)
of each byte representing the leftmost pixel.
§Errors
Returns InvalidImageSize
if the bitmap
slice doesn’t contain exactly
the number of expected bytes width
* height
elements
and FmtError
if the string writing fails.
Auto Trait Implementations§
impl Freeze for Pnm
impl RefUnwindSafe for Pnm
impl Send for Pnm
impl Sync for Pnm
impl Unpin for Pnm
impl UnwindSafe for Pnm
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize ⓘ
fn byte_align(&self) -> usize ⓘ
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of_val(&self) -> usize ⓘ
fn mem_align_of_val(&self) -> usize ⓘ
Source§fn mem_size_of_val(&self) -> usize ⓘ
fn mem_size_of_val(&self) -> usize ⓘ
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.