pub struct RgbImage { /* private fields */ }
Expand description
Creates a struct holding a raw RGB image
Implementations§
source§impl RgbImage
impl RgbImage
sourcepub fn new(
data: &[u8],
w: i32,
h: i32,
depth: ColorDepth
) -> Result<RgbImage, FltkError>
pub fn new( data: &[u8], w: i32, h: i32, depth: ColorDepth ) -> Result<RgbImage, FltkError>
Initializes a new raw RgbImage
, copies the data and handles its lifetime.
If you need to work with RGB data,
Errors
Errors on invalid or unsupported image format
Examples found in repository?
examples/rgb.rs (line 18)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let app = app::App::default();
let mut wind = window::Window::default().with_size(400, 400);
let mut frame = frame::Frame::default_fill();
wind.make_resizable(true);
wind.end();
wind.show();
frame.draw(move |f| {
let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
let x = iter % f.w() as usize;
let y = iter / f.w() as usize;
let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
pixel.copy_from_slice(&[red, green, blue, 255]);
}
let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
.unwrap()
.to_srgb_image()
.unwrap()
.blur(50)
.unwrap()
.convert(ColorDepth::Rgb8)
.unwrap();
image.draw(f.x(), f.y(), f.width(), f.height());
});
app.run().unwrap();
}
sourcepub unsafe fn from_data(
data: &[u8],
w: i32,
h: i32,
depth: ColorDepth
) -> Result<RgbImage, FltkError>
pub unsafe fn from_data( data: &[u8], w: i32, h: i32, depth: ColorDepth ) -> Result<RgbImage, FltkError>
sourcepub unsafe fn new2(
data: &[u8],
w: i32,
h: i32,
depth: i32,
line_data: i32
) -> Result<RgbImage, FltkError>
pub unsafe fn new2( data: &[u8], w: i32, h: i32, depth: i32, line_data: i32 ) -> Result<RgbImage, FltkError>
sourcepub unsafe fn from_data2(
data: &[u8],
w: i32,
h: i32,
depth: i32,
line_data: i32
) -> Result<RgbImage, FltkError>
pub unsafe fn from_data2( data: &[u8], w: i32, h: i32, depth: i32, line_data: i32 ) -> Result<RgbImage, FltkError>
sourcepub fn from_pixmap(image: &Pixmap) -> RgbImage
pub fn from_pixmap(image: &Pixmap) -> RgbImage
Creates an RgbImage from a pixmap
sourcepub fn convert(&self, new_depth: ColorDepth) -> Result<RgbImage, FltkError>
pub fn convert(&self, new_depth: ColorDepth) -> Result<RgbImage, FltkError>
Convert from one ColorDepth to another ColorDepth
Examples found in repository?
examples/rounded_images.rs (line 61)
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
fn main() {
let app = app::App::default().with_scheme(app::Scheme::Gleam);
app::background(0, 0, 0);
let image = image::SharedImage::load("screenshots/calc2.jpg")
.unwrap()
.to_rgb()
.unwrap();
let mut wind = window::Window::new(100, 100, 800, 400, "Hello from rust");
let row = group::Flex::default()
.row()
.with_size(800, 200)
.center_of_parent();
for i in 1..=4 {
let color_depth = enums::ColorDepth::from_u8(i).unwrap();
let image = image.convert(color_depth).unwrap();
RoundImageBox::new(100, image);
}
row.end();
wind.end();
wind.show();
app.run().unwrap();
}
More examples
examples/rgb.rs (line 24)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let app = app::App::default();
let mut wind = window::Window::default().with_size(400, 400);
let mut frame = frame::Frame::default_fill();
wind.make_resizable(true);
wind.end();
wind.show();
frame.draw(move |f| {
let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
let x = iter % f.w() as usize;
let y = iter / f.w() as usize;
let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
pixel.copy_from_slice(&[red, green, blue, 255]);
}
let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
.unwrap()
.to_srgb_image()
.unwrap()
.blur(50)
.unwrap()
.convert(ColorDepth::Rgb8)
.unwrap();
image.draw(f.x(), f.y(), f.width(), f.height());
});
app.run().unwrap();
}
sourcepub fn convert_transparent(&self) -> Result<RgbImage, FltkError>
pub fn convert_transparent(&self) -> Result<RgbImage, FltkError>
Convert black pixels to transparent
sourcepub fn blur(&self, radius: u32) -> Result<RgbImage, FltkError>
pub fn blur(&self, radius: u32) -> Result<RgbImage, FltkError>
Blur the image Adapted from https://www.cairographics.org/cookbook/blur.c/
Examples found in repository?
examples/rgb.rs (line 22)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let app = app::App::default();
let mut wind = window::Window::default().with_size(400, 400);
let mut frame = frame::Frame::default_fill();
wind.make_resizable(true);
wind.end();
wind.show();
frame.draw(move |f| {
let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
let x = iter % f.w() as usize;
let y = iter / f.w() as usize;
let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
pixel.copy_from_slice(&[red, green, blue, 255]);
}
let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
.unwrap()
.to_srgb_image()
.unwrap()
.blur(50)
.unwrap()
.convert(ColorDepth::Rgb8)
.unwrap();
image.draw(f.x(), f.y(), f.width(), f.height());
});
app.run().unwrap();
}
sourcepub fn to_srgb_image(&self) -> Result<RgbImage, FltkError>
pub fn to_srgb_image(&self) -> Result<RgbImage, FltkError>
Returns an SRGB image
Examples found in repository?
examples/rgb.rs (line 20)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
fn main() {
let app = app::App::default();
let mut wind = window::Window::default().with_size(400, 400);
let mut frame = frame::Frame::default_fill();
wind.make_resizable(true);
wind.end();
wind.show();
frame.draw(move |f| {
let mut fb: Vec<u8> = vec![0u8; (f.w() * f.h() * 4) as usize];
for (iter, pixel) in fb.chunks_exact_mut(4).enumerate() {
let x = iter % f.w() as usize;
let y = iter / f.w() as usize;
let (red, green, blue) = utils::hex2rgb((x ^ y) as u32);
pixel.copy_from_slice(&[red, green, blue, 255]);
}
let mut image = image::RgbImage::new(&fb, f.w(), f.h(), ColorDepth::Rgba8)
.unwrap()
.to_srgb_image()
.unwrap()
.blur(50)
.unwrap()
.convert(ColorDepth::Rgb8)
.unwrap();
image.draw(f.x(), f.y(), f.width(), f.height());
});
app.run().unwrap();
}
sourcepub fn set_scaling_algorithm(algorithm: RgbScaling)
pub fn set_scaling_algorithm(algorithm: RgbScaling)
Sets the scaling algorithm
sourcepub fn scaling_algorithm() -> RgbScaling
pub fn scaling_algorithm() -> RgbScaling
Gets the scaling algorithm
Trait Implementations§
source§impl ImageExt for RgbImage
impl ImageExt for RgbImage
source§fn copy_sized(&self, w: i32, h: i32) -> Self
fn copy_sized(&self, w: i32, h: i32) -> Self
Performs a deep copy of the image but to a new size. This will make use of the scaling algorithm when resizing.
source§fn draw(&mut self, arg2: i32, arg3: i32, arg4: i32, arg5: i32)
fn draw(&mut self, arg2: i32, arg3: i32, arg4: i32, arg5: i32)
Draws the image at the presupplied coordinates and size
source§fn draw_ext(
&mut self,
arg2: i32,
arg3: i32,
arg4: i32,
arg5: i32,
cx: i32,
cy: i32
)
fn draw_ext( &mut self, arg2: i32, arg3: i32, arg4: i32, arg5: i32, cx: i32, cy: i32 )
Draws the image at the presupplied coordinates and size and offset cx, cy
source§fn as_image_ptr(&self) -> *mut Fl_Image
fn as_image_ptr(&self) -> *mut Fl_Image
Returns a pointer of the image
source§unsafe fn from_image_ptr(ptr: *mut Fl_Image) -> Self
unsafe fn from_image_ptr(ptr: *mut Fl_Image) -> Self
Transforms a raw image pointer to an image Read more
source§fn to_rgb_data(&self) -> Vec<u8>
fn to_rgb_data(&self) -> Vec<u8>
Returns the underlying raw rgb image data
source§fn to_rgb(&self) -> Result<RgbImage, FltkError>
fn to_rgb(&self) -> Result<RgbImage, FltkError>
Transforms the image into an
RgbImage
Read moresource§fn to_rgb_image(&self) -> Result<RgbImage, FltkError>
fn to_rgb_image(&self) -> Result<RgbImage, FltkError>
Transforms the image into an
RgbImage
Read moresource§fn scale(
&mut self,
width: i32,
height: i32,
proportional: bool,
can_expand: bool
)
fn scale( &mut self, width: i32, height: i32, proportional: bool, can_expand: bool )
Scales the image
source§fn count(&self) -> i32
fn count(&self) -> i32
Return the count of pointers in an image (Pixmaps have more than 1, bitmaps have 0, Rgb based images have 1)
source§fn depth(&self) -> ColorDepth
fn depth(&self) -> ColorDepth
Gets the image’s depth
source§fn was_deleted(&self) -> bool
fn was_deleted(&self) -> bool
Checks if the image was deleted
source§unsafe fn into_image<I: ImageExt>(self) -> I
unsafe fn into_image<I: ImageExt>(self) -> I
Transforms an Image base into another Image Read more
source§impl PartialEq for RgbImage
impl PartialEq for RgbImage
impl Eq for RgbImage
impl Send for RgbImage
Available on non-crate feature
single-threaded
only.impl Sync for RgbImage
Available on non-crate feature
single-threaded
only.Auto Trait Implementations§
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
Mutably borrows from an owned value. Read more