pub struct ColorImage {
pub size: [usize; 2],
pub pixels: Vec<Color32>,
}
Expand description
A 2D RGBA color image in RAM.
Fields§
§size: [usize; 2]
width, height.
pixels: Vec<Color32>
The pixels, row by row, from top to bottom.
Implementations§
source§impl ColorImage
impl ColorImage
sourcepub fn new(size: [usize; 2], color: Color32) -> ColorImage
pub fn new(size: [usize; 2], color: Color32) -> ColorImage
Create an image filled with the given color.
sourcepub fn from_rgba_unmultiplied(size: [usize; 2], rgba: &[u8]) -> ColorImage
pub fn from_rgba_unmultiplied(size: [usize; 2], rgba: &[u8]) -> ColorImage
Create a ColorImage
from flat un-multiplied RGBA data.
This is usually what you want to use after having loaded an image file.
Panics if size[0] * size[1] * 4 != rgba.len()
.
§Example using the image
crate:
fn load_image_from_path(path: &std::path::Path) -> Result<egui::ColorImage, image::ImageError> {
let image = image::io::Reader::open(path)?.decode()?;
let size = [image.width() as _, image.height() as _];
let image_buffer = image.to_rgba8();
let pixels = image_buffer.as_flat_samples();
Ok(egui::ColorImage::from_rgba_unmultiplied(
size,
pixels.as_slice(),
))
}
fn load_image_from_memory(image_data: &[u8]) -> Result<ColorImage, image::ImageError> {
let image = image::load_from_memory(image_data)?;
let size = [image.width() as _, image.height() as _];
let image_buffer = image.to_rgba8();
let pixels = image_buffer.as_flat_samples();
Ok(ColorImage::from_rgba_unmultiplied(
size,
pixels.as_slice(),
))
}
pub fn from_rgba_premultiplied(size: [usize; 2], rgba: &[u8]) -> ColorImage
sourcepub fn from_gray(size: [usize; 2], gray: &[u8]) -> ColorImage
pub fn from_gray(size: [usize; 2], gray: &[u8]) -> ColorImage
Create a ColorImage
from flat opaque gray data.
Panics if size[0] * size[1] != gray.len()
.
sourcepub fn from_gray_iter(
size: [usize; 2],
gray_iter: impl Iterator<Item = u8>,
) -> ColorImage
pub fn from_gray_iter( size: [usize; 2], gray_iter: impl Iterator<Item = u8>, ) -> ColorImage
Alternative method to from_gray
.
Create a ColorImage
from iterator over flat opaque gray data.
Panics if size[0] * size[1] != gray_iter.len()
.
sourcepub fn as_raw_mut(&mut self) -> &mut [u8] ⓘ
pub fn as_raw_mut(&mut self) -> &mut [u8] ⓘ
A view of the underlying data as &mut [u8]
sourcepub fn region(&self, region: &Rect, pixels_per_point: Option<f32>) -> ColorImage
pub fn region(&self, region: &Rect, pixels_per_point: Option<f32>) -> ColorImage
Create a new Image from a patch of the current image. This method is especially convenient for screenshotting a part of the app
since region
can be interpreted as screen coordinates of the entire screenshot if pixels_per_point
is provided for the native application.
The floats of emath::Rect
are cast to usize, rounding them down in order to interpret them as indices to the image data.
Panics if region.min.x > region.max.x || region.min.y > region.max.y
, or if a region larger than the image is passed.
sourcepub fn from_rgb(size: [usize; 2], rgb: &[u8]) -> ColorImage
pub fn from_rgb(size: [usize; 2], rgb: &[u8]) -> ColorImage
Create a ColorImage
from flat RGB data.
This is what you want to use after having loaded an image file (and if you are ignoring the alpha channel - considering it to always be 0xff)
Panics if size[0] * size[1] * 3 != rgb.len()
.
sourcepub fn example() -> ColorImage
pub fn example() -> ColorImage
An example color image, useful for tests.
pub fn width(&self) -> usize
pub fn height(&self) -> usize
Trait Implementations§
source§impl Clone for ColorImage
impl Clone for ColorImage
source§fn clone(&self) -> ColorImage
fn clone(&self) -> ColorImage
1.6.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ColorImage
impl Debug for ColorImage
source§impl Default for ColorImage
impl Default for ColorImage
source§fn default() -> ColorImage
fn default() -> ColorImage
source§impl<'de> Deserialize<'de> for ColorImage
impl<'de> Deserialize<'de> for ColorImage
source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ColorImage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ColorImage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
source§impl From<&IconData> for ColorImage
impl From<&IconData> for ColorImage
source§impl From<ColorImage> for ImageData
impl From<ColorImage> for ImageData
source§fn from(image: ColorImage) -> ImageData
fn from(image: ColorImage) -> ImageData
source§impl From<IconData> for ColorImage
impl From<IconData> for ColorImage
source§impl PartialEq for ColorImage
impl PartialEq for ColorImage
source§impl Serialize for ColorImage
impl Serialize for ColorImage
source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for ColorImage
impl StructuralPartialEq for ColorImage
Auto Trait Implementations§
impl Freeze for ColorImage
impl RefUnwindSafe for ColorImage
impl Send for ColorImage
impl Sync for ColorImage
impl Unpin for ColorImage
impl UnwindSafe for ColorImage
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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