use std::path::PathBuf;
use ansimage::{
Advanced, Characters, Colors, Dithering, Settings, Size, UnicodeCharSet, convert, palettes,
settings::CharacterMode,
};
use clap::Parser;
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Cli {
#[arg(required = true)]
input: PathBuf,
#[arg(short, long)]
output: Option<PathBuf>,
#[arg(long)]
quiet: bool,
#[arg(long)]
width: Option<usize>,
#[arg(long)]
height: Option<usize>,
#[arg(short, long)]
uncompressed: bool,
}
fn main() -> color_eyre::Result<()> {
let cli = Cli::parse();
let settings = Settings {
size: Size {
width: cli.width.unwrap_or(80),
height: cli.height.unwrap_or(80),
..Default::default()
},
characters: Characters {
mode: CharacterMode::Unicode(UnicodeCharSet::Quarter),
..Default::default()
},
colors: Colors {
palette: palettes::COLOR_PALETTE_SWEETIE16.to_vec(),
is_truecolor: false,
},
advanced: Advanced {
dithering: Dithering {
is_enabled: false,
..Default::default()
},
compression: !cli.uncompressed,
..Default::default()
},
};
let output_str = convert(&cli.input, &settings)?;
if !cli.quiet {
println!("{output_str}");
}
if let Some(output_path) = cli.output {
std::fs::write(output_path, output_str)?;
}
Ok(())
}