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 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.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Default for ColorImage
impl Default for ColorImage
Source§fn default() -> ColorImage
fn default() -> 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 PartialEq for ColorImage
impl PartialEq for ColorImage
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§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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 moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.