08_vimage_processing/
08_vimage_processing.rs1use apple_accelerate::{contrast_stretch_planar8, scale_argb8888, vimage_flags, ImageBuffer};
2
3fn main() {
4 let mut source = vec![255_u8, 10, 20, 30];
5 let mut scaled = vec![0_u8; 16];
6 let src = ImageBuffer::from_argb8888(&mut source, 1, 1).expect("src");
7 let mut dst = ImageBuffer::from_argb8888(&mut scaled, 2, 2).expect("dst");
8 scale_argb8888(&src, &mut dst, vimage_flags::NO_FLAGS).expect("scale");
9 for pixel in scaled.chunks_exact(4) {
10 assert_eq!(pixel, &[255, 10, 20, 30]);
11 }
12
13 let mut planar_src = vec![5_u8, 15, 25, 35];
14 let mut planar_dst = vec![0_u8; 4];
15 let src_planar = ImageBuffer::from_planar8(&mut planar_src, 2, 2).expect("planar src");
16 let mut dst_planar = ImageBuffer::from_planar8(&mut planar_dst, 2, 2).expect("planar dst");
17 contrast_stretch_planar8(&src_planar, &mut dst_planar, vimage_flags::NO_FLAGS)
18 .expect("stretch");
19 assert_eq!(planar_dst, vec![0, 85, 170, 255]);
20
21 println!("vimage smoke passed: scaled={scaled:?} planar={planar_dst:?}");
22}