Trait nannou::image::ImageDecoder[][src]

pub trait ImageDecoder<'a> {
    type Reader: 'a + Read;
    pub fn dimensions(&self) -> (u32, u32);
pub fn color_type(&self) -> ColorType;
pub fn into_reader(self) -> Result<Self::Reader, ImageError>; pub fn original_color_type(&self) -> ExtendedColorType { ... }
pub fn total_bytes(&self) -> u64 { ... }
pub fn scanline_bytes(&self) -> u64 { ... }
pub fn read_image(self, buf: &mut [u8]) -> Result<(), ImageError> { ... }
pub fn read_image_with_progress<F>(
        self,
        buf: &mut [u8],
        progress_callback: F
    ) -> Result<(), ImageError>
    where
        F: Fn(Progress)
, { ... } }

The trait that all decoders implement

Associated Types

type Reader: 'a + Read[src]

The type of reader produced by into_reader.

Loading content...

Required methods

pub fn dimensions(&self) -> (u32, u32)[src]

Returns a tuple containing the width and height of the image

pub fn color_type(&self) -> ColorType[src]

Returns the color type of the image data produced by this decoder

pub fn into_reader(self) -> Result<Self::Reader, ImageError>[src]

Returns a reader that can be used to obtain the bytes of the image. For the best performance, always try to read at least scanline_bytes from the reader at a time. Reading fewer bytes will cause the reader to perform internal buffering.

Loading content...

Provided methods

pub fn original_color_type(&self) -> ExtendedColorType[src]

Retuns the color type of the image file before decoding

pub fn total_bytes(&self) -> u64[src]

Returns the total number of bytes in the decoded image.

This is the size of the buffer that must be passed to read_image or read_image_with_progress. The returned value may exceed usize::MAX, in which case it isn’t actually possible to construct a buffer to decode all the image data into.

pub fn scanline_bytes(&self) -> u64[src]

Returns the minimum number of bytes that can be efficiently read from this decoder. This may be as few as 1 or as many as total_bytes().

pub fn read_image(self, buf: &mut [u8]) -> Result<(), ImageError>[src]

Returns all the bytes in the image.

This function takes a slice of bytes and writes the pixel data of the image into it. Although not required, for certain color types callers may want to pass buffers which are aligned to 2 or 4 byte boundaries to the slice can be cast to a u16 or u32. To accommodate such casts, the returned contents will always be in native endian.

Panics

This function panics if buf.len() != self.total_bytes().

Examples

use zerocopy::{AsBytes, FromBytes};
fn read_16bit_image(decoder: impl ImageDecoder) -> Vec<16> {
    let mut buf: Vec<u16> = vec![0; decoder.total_bytes()/2];
    decoder.read_image(buf.as_bytes());
    buf
}

pub fn read_image_with_progress<F>(
    self,
    buf: &mut [u8],
    progress_callback: F
) -> Result<(), ImageError> where
    F: Fn(Progress), 
[src]

Same as read_image but periodically calls the provided callback to give updates on loading progress.

Loading content...

Implementors

impl<'a, R> ImageDecoder<'a> for BmpDecoder<R> where
    R: 'a + Read + Seek
[src]

type Reader = BmpReader<R>

impl<'a, R> ImageDecoder<'a> for DdsDecoder<R> where
    R: 'a + Read
[src]

type Reader = DxtReader<R>

impl<'a, R> ImageDecoder<'a> for DxtDecoder<R> where
    R: 'a + Read
[src]

type Reader = DxtReader<R>

impl<'a, R> ImageDecoder<'a> for FarbfeldDecoder<R> where
    R: 'a + Read
[src]

type Reader = FarbfeldReader<R>

impl<'a, R> ImageDecoder<'a> for GifDecoder<R> where
    R: 'a + Read
[src]

type Reader = GifReader<R>

impl<'a, R> ImageDecoder<'a> for HdrAdapter<R> where
    R: 'a + BufRead
[src]

type Reader = HdrReader<R>

impl<'a, R> ImageDecoder<'a> for IcoDecoder<R> where
    R: 'a + Read + Seek
[src]

type Reader = IcoReader<R>

impl<'a, R> ImageDecoder<'a> for JpegDecoder<R> where
    R: 'a + Read
[src]

type Reader = JpegReader<R>

impl<'a, R> ImageDecoder<'a> for PngDecoder<R> where
    R: 'a + Read
[src]

type Reader = PngReader<R>

impl<'a, R> ImageDecoder<'a> for PnmDecoder<R> where
    R: 'a + Read
[src]

type Reader = PnmReader<R>

impl<'a, R> ImageDecoder<'a> for TgaDecoder<R> where
    R: 'a + Read + Seek
[src]

type Reader = TGAReader<R>

impl<'a, R> ImageDecoder<'a> for TiffDecoder<R> where
    R: 'a + Read + Seek
[src]

type Reader = TiffReader<R>

impl<'a, R> ImageDecoder<'a> for WebPDecoder<R> where
    R: 'a + Read
[src]

type Reader = WebpReader<R>

Loading content...