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: Read + Seek> BmpDecoder<R>
impl<R: Read + 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<'a, R: 'a + Read + Seek> ImageDecoder<'a> for BmpDecoder<R>
impl<'a, R: 'a + Read + Seek> ImageDecoder<'a> 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 into_reader(self) -> ImageResult<Self::Reader>
fn into_reader(self) -> ImageResult<Self::Reader>
scanline_bytes
from the reader at a time. Reading
fewer bytes will cause the reader to perform internal buffering.source§fn read_image(self, buf: &mut [u8]) -> ImageResult<()>
fn read_image(self, buf: &mut [u8]) -> ImageResult<()>
source§fn original_color_type(&self) -> ExtendedColorType
fn original_color_type(&self) -> ExtendedColorType
source§fn icc_profile(&mut self) -> Option<Vec<u8>>
fn icc_profile(&mut self) -> Option<Vec<u8>>
source§fn total_bytes(&self) -> u64
fn total_bytes(&self) -> u64
source§fn scanline_bytes(&self) -> u64
fn scanline_bytes(&self) -> u64
total_bytes()
.source§fn read_image_with_progress<F: Fn(Progress)>(
self,
buf: &mut [u8],
progress_callback: F,
) -> ImageResult<()>
fn read_image_with_progress<F: Fn(Progress)>( self, buf: &mut [u8], progress_callback: F, ) -> ImageResult<()>
read_image
but periodically calls the provided callback to give updates on loading
progress.source§fn set_limits(&mut self, limits: Limits) -> ImageResult<()>
fn set_limits(&mut self, limits: Limits) -> ImageResult<()>
source§impl<'a, R: 'a + Read + Seek> ImageDecoderRect<'a> for BmpDecoder<R>
impl<'a, R: 'a + Read + Seek> ImageDecoderRect<'a> for BmpDecoder<R>
source§fn read_rect_with_progress<F: Fn(Progress)>(
&mut self,
x: u32,
y: u32,
width: u32,
height: u32,
buf: &mut [u8],
progress_callback: F,
) -> ImageResult<()>
fn read_rect_with_progress<F: Fn(Progress)>( &mut self, x: u32, y: u32, width: u32, height: u32, buf: &mut [u8], progress_callback: F, ) -> 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