use std::fs::File;
use std::io::BufWriter;
use std::path::Path;
pub fn write_png_file_u8(file: &Path, rgb_data: &[u8], image_width: u32, image_height: u32) {
let file = File::create(file).unwrap();
let mut writer = BufWriter::new(file);
let mut encoder = png::Encoder::new(&mut writer, image_width, image_height);
encoder.set_color(png::ColorType::Rgb);
encoder.set_depth(png::BitDepth::Eight);
let mut writer = encoder.write_header().unwrap();
writer.write_image_data(rgb_data).unwrap();
}
pub fn write_png_file_rgb_tuples(file: &Path, rgb_image: &[Vec<(u8, u8, u8)>]) {
let width = rgb_image[0].len() as u32;
let height = rgb_image.len() as u32;
let rgb_data = rgb_image
.iter()
.flat_map(|row| row.iter())
.flat_map(|(r, g, b)| vec![r, g, b].into_iter())
.copied()
.collect::<Vec<u8>>();
write_png_file_u8(file, &rgb_data, width, height)
}