Crates.io | imageformat |
lib.rs | imageformat |
version | 0.3.0 |
created_at | 2024-12-06 04:23:03.226496+00 |
updated_at | 2025-08-06 14:28:49.440512+00 |
description | Quick probing of image format without loading the entire file. |
homepage | https://github.com/AllenDang/imageformat |
repository | https://github.com/AllenDang/imageformat |
max_upload_size | |
id | 1473919 |
size | 29,611 |
Quickly probe the format of various image formats without reading the entire file.
The goal of this crate is to be able to detect format of a supported image without loading unnecessary data, and without pulling in more dependencies. Most reads only require 16 bytes or less.
use image_format_detector::prelude::*;
fn main() {
// Example: Read the first few bytes of a file
let file = std::fs::File::open("/Somepath/example.webp")?;
let mut cursor = std::io::Cursor::new(file);
let format = detect_image_format(&mut cursor);
// Or: pass in the file path
let format = detect_image_format_path("/Somepath/example.png").unwrap();
match format {
ImageFormat::Jpeg => println!("It's a JPEG image."),
ImageFormat::JpegXl => println!("It's a JPEG XL image."),
ImageFormat::Png => println!("It's a PNG image."),
ImageFormat::Webp => println!("It's a WEBP image."),
ImageFormat::Astc => println!("It's an ASTC texture."),
ImageFormat::Pvr => println!("It's a PVRTC/PVR texture."),
ImageFormat::Etc2 => println!("It's an ETC2 texture."),
ImageFormat::Eac => println!("It's an EAC texture."),
...
}
}
If you have a format you think should be added, feel free to create an issue.