pub struct BmpDecoder<R> {Show 15 fields
reader: R,
bmp_header_type: BMPHeaderType,
indexed_color: bool,
width: i32,
height: i32,
data_offset: u64,
top_down: bool,
no_file_header: bool,
add_alpha_channel: bool,
has_loaded_metadata: bool,
image_type: ImageType,
bit_count: u16,
colors_used: u32,
palette: Option<Vec<[u8; 3]>>,
bitfields: Option<Bitfields>,
}
Expand description
A bmp decoder
Fields§
§reader: R
§bmp_header_type: BMPHeaderType
§indexed_color: bool
§width: i32
§height: i32
§data_offset: u64
§top_down: bool
§no_file_header: bool
§add_alpha_channel: bool
§has_loaded_metadata: bool
§image_type: ImageType
§bit_count: u16
§colors_used: u32
§palette: Option<Vec<[u8; 3]>>
§bitfields: Option<Bitfields>
Implementations§
Source§impl<R: BufRead + Seek> BmpDecoder<R>
impl<R: BufRead + Seek> BmpDecoder<R>
fn new_decoder(reader: R) -> BmpDecoder<R>
Sourcepub fn new(reader: R) -> ImageResult<BmpDecoder<R>>
pub fn new(reader: R) -> ImageResult<BmpDecoder<R>>
Create a new decoder that decodes from the stream r
Sourcepub fn new_without_file_header(reader: R) -> ImageResult<BmpDecoder<R>>
pub fn new_without_file_header(reader: R) -> ImageResult<BmpDecoder<R>>
Create a new decoder that decodes from the stream r
without first
reading a BITMAPFILEHEADER. This is useful for decoding the CF_DIB
format
directly from the Windows clipboard.
pub(crate) fn new_with_ico_format(reader: R) -> ImageResult<BmpDecoder<R>>
Sourcepub fn set_indexed_color(&mut self, indexed_color: bool)
pub fn set_indexed_color(&mut self, indexed_color: bool)
If true, the palette in BMP does not apply to the image even if it is found. In other words, the output image is the indexed color.
pub(crate) fn reader(&mut self) -> &mut R
fn read_file_header(&mut self) -> ImageResult<()>
Sourcefn read_bitmap_core_header(&mut self) -> ImageResult<()>
fn read_bitmap_core_header(&mut self) -> ImageResult<()>
Read BITMAPCOREHEADER https://msdn.microsoft.com/en-us/library/vs/alm/dd183372(v=vs.85).aspx
returns Err if any of the values are invalid.
Sourcefn read_bitmap_info_header(&mut self) -> ImageResult<()>
fn read_bitmap_info_header(&mut self) -> ImageResult<()>
Read BITMAPINFOHEADER https://msdn.microsoft.com/en-us/library/vs/alm/dd183376(v=vs.85).aspx or BITMAPV{2|3|4|5}HEADER.
returns Err if any of the values are invalid.
fn read_bitmasks(&mut self) -> ImageResult<()>
fn read_metadata(&mut self) -> ImageResult<()>
fn get_palette_size(&mut self) -> ImageResult<usize>
fn bytes_per_color(&self) -> usize
fn read_palette(&mut self) -> ImageResult<()>
Sourcepub fn get_palette(&self) -> Option<&[[u8; 3]]>
pub fn get_palette(&self) -> Option<&[[u8; 3]]>
Get the palette that is embedded in the BMP image, if any.
fn num_channels(&self) -> usize
fn rows<'a>(&self, pixel_data: &'a mut [u8]) -> RowIterator<'a> ⓘ
fn read_palettized_pixel_data(&mut self, buf: &mut [u8]) -> ImageResult<()>
fn read_16_bit_pixel_data( &mut self, buf: &mut [u8], bitfields: Option<&Bitfields>, ) -> ImageResult<()>
Sourcefn read_32_bit_pixel_data(&mut self, buf: &mut [u8]) -> ImageResult<()>
fn read_32_bit_pixel_data(&mut self, buf: &mut [u8]) -> ImageResult<()>
Read image data from a reader in 32-bit formats that use bitfields.
Sourcefn read_full_byte_pixel_data(
&mut self,
buf: &mut [u8],
format: &FormatFullBytes,
) -> ImageResult<()>
fn read_full_byte_pixel_data( &mut self, buf: &mut [u8], format: &FormatFullBytes, ) -> ImageResult<()>
Read image data from a reader where the colours are stored as 8-bit values (24 or 32-bit).
fn read_rle_data( &mut self, buf: &mut [u8], image_type: ImageType, ) -> ImageResult<()>
Sourcepub(crate) fn read_image_data(&mut self, buf: &mut [u8]) -> ImageResult<()>
pub(crate) fn read_image_data(&mut self, buf: &mut [u8]) -> ImageResult<()>
Read the actual data of the image. This function is deliberately not public because it cannot be called multiple times without seeking back the underlying reader in between.
Trait Implementations§
Source§impl<R: BufRead + Seek> ImageDecoder for BmpDecoder<R>
impl<R: BufRead + Seek> ImageDecoder for BmpDecoder<R>
Source§fn dimensions(&self) -> (u32, u32)
fn dimensions(&self) -> (u32, u32)
Source§fn color_type(&self) -> ColorType
fn color_type(&self) -> ColorType
Source§fn read_image(self, buf: &mut [u8]) -> ImageResult<()>
fn read_image(self, buf: &mut [u8]) -> ImageResult<()>
Source§fn read_image_boxed(self: Box<Self>, buf: &mut [u8]) -> ImageResult<()>
fn read_image_boxed(self: Box<Self>, buf: &mut [u8]) -> ImageResult<()>
read_image
instead; this method is an implementation detail needed so the trait can
be object safe. Read moreSource§fn original_color_type(&self) -> ExtendedColorType
fn original_color_type(&self) -> ExtendedColorType
Source§fn icc_profile(&mut self) -> ImageResult<Option<Vec<u8>>>
fn icc_profile(&mut self) -> ImageResult<Option<Vec<u8>>>
Ok(None)
if the image does not have one. Read moreSource§fn exif_metadata(&mut self) -> ImageResult<Option<Vec<u8>>>
fn exif_metadata(&mut self) -> ImageResult<Option<Vec<u8>>>
kamadak-exif
is required to actually parse it. Read moreSource§fn orientation(&mut self) -> ImageResult<Orientation>
fn orientation(&mut self) -> ImageResult<Orientation>
Source§fn total_bytes(&self) -> u64
fn total_bytes(&self) -> u64
Source§fn set_limits(&mut self, limits: Limits) -> ImageResult<()>
fn set_limits(&mut self, limits: Limits) -> ImageResult<()>
Auto Trait Implementations§
impl<R> Freeze for BmpDecoder<R>where
R: Freeze,
impl<R> RefUnwindSafe for BmpDecoder<R>where
R: RefUnwindSafe,
impl<R> Send for BmpDecoder<R>where
R: Send,
impl<R> Sync for BmpDecoder<R>where
R: Sync,
impl<R> Unpin for BmpDecoder<R>where
R: Unpin,
impl<R> UnwindSafe for BmpDecoder<R>where
R: 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