From bf58d2cd510887c7f3833bcd7c461ec8548dbbee Mon Sep 17 00:00:00 2001 From: Breval Ferrari Date: Sat, 15 Mar 2025 00:00:51 -0400 Subject: [PATCH] databending example in bong --- bong/src/cli.rs | 9 +++++++++ bong/src/main.rs | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 bong/src/cli.rs diff --git a/bong/src/cli.rs b/bong/src/cli.rs new file mode 100644 index 0000000..ef03136 --- /dev/null +++ b/bong/src/cli.rs @@ -0,0 +1,9 @@ +use std::path::PathBuf; + +use clap::Parser; + +#[derive(Parser)] +pub(super) struct Cli { + pub(super) input_file: PathBuf, + pub(super) output_file: PathBuf, +} diff --git a/bong/src/main.rs b/bong/src/main.rs index e7a11a9..6e8be02 100644 --- a/bong/src/main.rs +++ b/bong/src/main.rs @@ -1,3 +1,36 @@ -fn main() { - println!("Hello, world!"); +use bingus::{ + img::{Dimensions, RgbImage}, + snd::{RawSamples, Sample}, + Bendable, DynamicBendable, OpenError, +}; +use clap::Parser; +use cli::Cli; + +mod cli; + +fn main() -> Result<(), OpenError> { + let args = Cli::parse(); + if let DynamicBendable::Image(i) = + bingus::open(args.input_file)?.expect("could not open this file.") + { + let dimensions = Dimensions { + width: i.width(), + height: i.height(), + }; + RawSamples::from( + RawSamples::::bend_from(i, (), bingus::Crop::End) + .unwrap() + .as_ref() + .iter() + .map(|s| s.to_sample::().to_sample()) + .collect::>(), + ) + .bend_into::(dimensions, bingus::Crop::End) + .unwrap() + .save(args.output_file) + .unwrap(); + } else { + println!("Not an image! Sorry!"); + } + Ok(()) }