#尺寸 #图像 #大小 #元数据 #文件元数据 #读取文件

imagesize

在不加载整个文件的情况下快速探测图像尺寸

32 个版本

0.13.0 2024年6月18日
0.12.0 2023年5月11日
0.11.0 2023年1月6日
0.10.1 2022年9月24日
0.3.5 2017年5月17日

#17 in 图像

Download history 33004/week @ 2024-05-04 38466/week @ 2024-05-11 39351/week @ 2024-05-18 36239/week @ 2024-05-25 34347/week @ 2024-06-01 46464/week @ 2024-06-08 51233/week @ 2024-06-15 50378/week @ 2024-06-22 46487/week @ 2024-06-29 46642/week @ 2024-07-06 49296/week @ 2024-07-13 51723/week @ 2024-07-20 43926/week @ 2024-07-27 47804/week @ 2024-08-03 47036/week @ 2024-08-10 40960/week @ 2024-08-17

187,794 每月下载量
用于 244 个crate (22 直接)

MIT 许可证

58KB
1K SLoC

crates.io version docs-badge

imagesize

快速探测各种图像格式的大小,无需读取整个文件。

这个crate的目标是能够在不加载不必要数据和不引入更多依赖的情况下,读取支持图像的尺寸。大多数读取只需要16字节或更少,更复杂的格式则利用跳过垃圾数据。

用法

将以下内容添加到您的Cargo.toml中

[dependencies]
imagesize = "0.13"

支持的图像格式

  • Aseprite
  • Avif
  • BMP
  • DDS
  • EXR
  • Farbfeld
  • GIF
  • HDR
  • HEIC / HEIF
  • ICO*
  • ILBM (IFF)
  • JPEG
  • JPEG XL
  • KTX2
  • PNG
  • PNM (PBM, PGM, PPM)
  • PSD / PSB
  • QOI
  • TGA
  • TIFF
  • VTF
  • WEBP

如果您认为应该添加某种格式,请随时创建一个issue。

*ICO文件可以包含多个图像,imagesize将给出最大的一个的尺寸。

示例

从文件中

match imagesize::size("example.webp") {
    Ok(size) => println!("Image dimensions: {}x{}", size.width, size.height),
    Err(why) => println!("Error getting dimensions: {:?}", why)
}

从向量中

let data = vec![0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x64, 0x00, 0x64, 0x00];
match imagesize::blob_size(&data) {
    Ok(size) => println!("Image dimensions: {}x{}", size.width, size.height),
    Err(why) => println!("Error getting dimensions: {:?}", why),
}

无运行时依赖