Struct rerun::external::eframe::egui::ColorImage
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§
§impl ColorImage
impl ColorImage
pub 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.
pub 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
pub 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()
.
pub 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()
.
pub 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]
pub 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.
pub 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()
.
pub 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§
§impl Clone for ColorImage
impl Clone for ColorImage
§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 more§impl Debug for ColorImage
impl Debug for ColorImage
§impl Default for ColorImage
impl Default for ColorImage
§fn default() -> ColorImage
fn default() -> ColorImage
§impl<'de> Deserialize<'de> for ColorImage
impl<'de> Deserialize<'de> for ColorImage
§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>,
§impl From<&IconData> for ColorImage
impl From<&IconData> for ColorImage
§fn from(icon: &IconData) -> ColorImage
fn from(icon: &IconData) -> ColorImage
§impl From<ColorImage> for ImageData
impl From<ColorImage> for ImageData
§fn from(image: ColorImage) -> ImageData
fn from(image: ColorImage) -> ImageData
§impl From<IconData> for ColorImage
impl From<IconData> for ColorImage
§fn from(icon: IconData) -> ColorImage
fn from(icon: IconData) -> ColorImage
§impl Index<(usize, usize)> for ColorImage
impl Index<(usize, usize)> for ColorImage
§impl IndexMut<(usize, usize)> for ColorImage
impl IndexMut<(usize, usize)> for ColorImage
§impl PartialEq for ColorImage
impl PartialEq for ColorImage
§fn eq(&self, other: &ColorImage) -> bool
fn eq(&self, other: &ColorImage) -> bool
self
and other
values to be equal, and is used
by ==
.§impl Serialize for ColorImage
impl Serialize for ColorImage
§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> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request