stdin read

This commit is contained in:
2024-07-07 15:41:53 +02:00
parent e0f043bb77
commit 2e87792a7f
5 changed files with 87 additions and 2 deletions

View File

@@ -1,5 +1,28 @@
use image::io::Reader;
use image;
use image::GenericImageView;
use std::io::{self, BufReader, BufRead, Cursor};
use atty::Stream;
pub fn load_image_from_stdin() -> Result<image::DynamicImage, image::ImageError> {
let mut buffer: Vec<u8> = Vec::new();
let mut raw_reader: Box<dyn BufRead> = if atty::is(Stream::Stdin) {
eprintln!("Error: No image provided");
std::process::exit(1);
} else {
Box::new(BufReader::new(io::stdin()))
};
raw_reader.read_to_end(&mut buffer).unwrap();
let reader = Reader::new(Cursor::new(buffer))
.with_guessed_format()
.expect("Failed to read image format");
println!("Image loaded: stdin");
reader.decode()
}
pub fn load_image(file_name: &str) -> image::DynamicImage {
let img = image::open(file_name).expect("File not found!");