[−][src]Crate devpng
Example
Want to modify an image ?
use devpng::prelude::PNG; fn main() -> Result<(), String> { // Load. let mut buf = std::fs::read("img.png") .expect("Couldn't read the file."); let mut png = PNG::load(&mut buf)?; // Access Image. let img = png.image(); // Modify image. for i in 0..img.nrow * img.ncol { img.data[i] = !img.data[i]; } // Store. png.store("img.png")?; Ok(()) }
Want to create an image ?
use devpng::prelude::{ColourType, Image, PNG}; fn main() -> Result<(), String> { let mut data = [255, 0, 0, 0, 0, 0]; let img = Image::new(&mut data[..]) .set_ncol(6) .set_nrow(1) .set_depth(8) .set_colour(ColourType::RGB); let mut buf = Vec::new(); let mut png = PNG::from_image(&mut buf, &img); // Store. png.store("img.png")?; Ok(()) }
Want low level access ?
use devpng::prelude::DataStreamMut; fn main() -> Result<(), String> { // Load. let mut buf = std::fs::read("img.png") .expect("Couldn't read the file."); let mut datastream = DataStreamMut::from(&mut buf)?; // Access Image. let mut cache = datastream.idat()?; let img = cache.image(); // Modify image. for i in 0..img.nrow * img.ncol { img.data[i] = !img.data[i]; } // Store. let png = datastream.rebuild(&mut Some(&mut cache)); std::fs::write("img.png", png) .expect("Couldn't write the file."); Ok(()) }
Modules
cache | FiltCache |
colour | ColourType |
datastream | DataStream |
image | Image |
png | PNG |
prelude |