logo
pub struct ImageRaw<'a, C, BO = BigEndian> where
    C: PixelColor + From<<C as PixelColor>::Raw>,
    BO: ByteOrder
{ /* private fields */ }
Expand description

An image constructed from a slice of raw pixel data.

The ImageRaw struct can be used to construct an image from a slice of raw image data. The storage format is determined by the PixelColor type C and the ByteOrder BO. The byteorder doesn’t need to be specified for colors which aren’t stored in multiple bytes.

For color types with less than 8 bits per pixels the start of each row is aligned to the next whole byte.

Details about the conversion of raw data to color types are explained in the raw module documentation.

As ImageRaw does not implement [Drawable], it cannot be directly drawn to a supported display. The Image struct should be used to wrap an ImageRaw to make it drawable.

Examples

Draw a 1BPP image

This example creates an image from 1 bit per pixel data.

use embedded_graphics::{
    image::{Image, ImageRaw},
    pixelcolor::BinaryColor,
    prelude::*,
};

/// Image data with 12 x 5 pixels.
/// The data for each row is 12 bits long and is padded with zeros on the
/// end because each row needs to contain a whole number of bytes.
#[rustfmt::skip]
const DATA: &[u8] = &[
    0b11101111, 0b0101_0000,
    0b10001000, 0b0101_0000,
    0b11101011, 0b0101_0000,
    0b10001001, 0b0101_0000,
    0b11101111, 0b0101_0000,
];

// The type annotation `ImageRaw<BinaryColor>` is used to specify the format
// of the stored raw data (`PixelColor::Raw`) and which color type the
// raw data gets converted into.
let raw_image: ImageRaw<BinaryColor> = ImageRaw::new(DATA, 12, 5);

let image: Image<_, BinaryColor> = Image::new(&raw_image, Point::zero());

let mut display = Display::default();

image.draw(&mut display)?;

Draw an image that uses multibyte pixel encoding

Colors with more than one byte per pixel need an additional type annotation for the byte order. For convenience, the ImageRawBE and ImageRawLE type aliases can be used to abbreviate the type.

use embedded_graphics::{
    image::{Image, ImageRaw, ImageRawBE, ImageRawLE},
    pixelcolor::{
        raw::{BigEndian, LittleEndian},
        Rgb565, Rgb888,
    },
    prelude::*,
};

// Rgb888 image with 24 bits per pixel and big endian byte order
let image1: ImageRawBE<Rgb888> = ImageRaw::new(DATA, 8, 8);
// or:
let image2: ImageRaw<Rgb888, BigEndian> = ImageRaw::new(DATA, 8, 8);

// Rgb565 image with 16 bits per pixel and little endian byte order
let image1: ImageRawLE<Rgb565> = ImageRaw::new(DATA, 16, 6);
// or:
let image2: ImageRaw<Rgb565, LittleEndian> = ImageRaw::new(DATA, 16, 6);

Implementations

Creates a new image.

Panics

If data doesn’t have the correct length.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

Get the width in pixels of an image

Get the height in pixels of an image

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

Creates an iterator from a value. Read more

Iterator over pixels in the image

Get an iterator over the pixels of the image

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.