Skip to main content

binocular/preview/image/
mod.rs

1mod detect;
2mod metadata;
3pub(crate) mod ui;
4
5use image::ImageReader;
6use ratatui::text::Text;
7use ratatui_image::picker::Picker;
8use ratatui_image::protocol::StatefulProtocol;
9use std::path::Path;
10
11pub fn is_image_extension(path: &Path) -> bool {
12    detect::is_image_extension(path)
13}
14
15pub fn load_image(path: &Path, picker: &Picker) -> Option<(StatefulProtocol, Text<'static>)> {
16    let reader = ImageReader::open(path).ok()?;
17    let reader = reader.with_guessed_format().ok()?;
18    let format = reader.format();
19    let dyn_img = reader.decode().ok()?;
20    let metadata = metadata::generate_metadata(path, &dyn_img, format);
21    let protocol = picker.new_resize_protocol(dyn_img);
22    Some((protocol, metadata))
23}