thumbcache

Crates.iothumbcache
lib.rsthumbcache
version0.4.0
created_at2024-08-27 13:08:49.228683+00
updated_at2025-05-13 11:38:29.745003+00
descriptionGet file thumbnail on Windows
homepagehttps://github.com/yhdgms1/thumbcache
repositoryhttps://github.com/yhdgms1/thumbcache
max_upload_size
id1353373
size12,113
Artemiy Schukin (yhdgms1)

documentation

README

thumbcache

Uses Windows thumbcache to get bmp preview for a file.

Usage

When trying to get preview from file that is not an image (.zip or .exe) will result in error.

use std::io::{Error, Write};

pub fn main() -> Result<(), Error> {
  let bmp = thumbcache::get_bmp(r"C:\path-to-file.jpeg", thumbcache::ThumbSize::S96)?;
  
  let mut file_out = std::fs::File::create("./out.bmp")?;
  let _ = file_out.write_all(&bmp);
  
  Ok(())
}

Examples

Convert BMP into JPEG

Windows can only return BMP, but this format may not always be convenient. In this example, BMP is converted to JPEG using image crate.

use thumbcache::{get_bmp};
use image::{load_from_memory};

fn main() {
  let bmp = get_bmp(r"C:\path-to-file.jpeg", thumbcache::ThumbSize::S256).unwrap();

  let image = load_from_memory(&bmp).unwrap();

  let mut buf: Vec<u8> = Vec::new();
  let mut writer = std::io::Cursor::new(&mut buf);

  image.write_to(&mut writer, image::ImageFormat::Jpeg).unwrap();

  std::fs::write("./output.jpeg", buf).unwrap();
}

Sources

https://stackoverflow.com/questions/14207618/get-bytes-from-hbitmap

https://stackoverflow.com/questions/21751747/extract-thumbnail-for-any-file-in-windows

https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ishellitemimagefactory-getimage

Commit count: 12

cargo fmt