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) -> Self
pub fn new(size: [usize; 2], color: Color32) -> Self
Create an image filled with the given color.
Sourcepub fn from_rgba_unmultiplied(size: [usize; 2], rgba: &[u8]) -> Self
pub fn from_rgba_unmultiplied(size: [usize; 2], rgba: &[u8]) -> Self
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]) -> Self
Sourcepub fn from_gray(size: [usize; 2], gray: &[u8]) -> Self
pub fn from_gray(size: [usize; 2], gray: &[u8]) -> Self
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>,
) -> Self
pub fn from_gray_iter( size: [usize; 2], gray_iter: impl Iterator<Item = u8>, ) -> Self
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>) -> Self
pub fn region(&self, region: &Rect, pixels_per_point: Option<f32>) -> Self
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]) -> Self
pub fn from_rgb(size: [usize; 2], rgb: &[u8]) -> Self
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 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 more