35 lines
902 B
Rust
35 lines
902 B
Rust
use anyhow::{Context, Result};
|
|
use clap::Parser;
|
|
use std::fs;
|
|
|
|
#[derive(Parser)]
|
|
#[command(name = "stitch-peek", about = "PES embroidery file thumbnailer")]
|
|
struct Args {
|
|
/// Input PES file path
|
|
#[arg(short = 'i', long = "input")]
|
|
input: std::path::PathBuf,
|
|
|
|
/// Output PNG file path
|
|
#[arg(short = 'o', long = "output")]
|
|
output: std::path::PathBuf,
|
|
|
|
/// Thumbnail size in pixels
|
|
#[arg(short = 's', long = "size", default_value = "128")]
|
|
size: u32,
|
|
}
|
|
|
|
fn main() -> Result<()> {
|
|
let args = Args::parse();
|
|
|
|
let data = fs::read(&args.input)
|
|
.with_context(|| format!("failed to read {}", args.input.display()))?;
|
|
|
|
let png = rustitch::thumbnail(&data, args.size)
|
|
.with_context(|| "failed to generate thumbnail")?;
|
|
|
|
fs::write(&args.output, &png)
|
|
.with_context(|| format!("failed to write {}", args.output.display()))?;
|
|
|
|
Ok(())
|
|
}
|