#width-height #image #file-format #metadata #byte #wrapper #reading

imsz

从图像文件中尽可能少地读取字节来获取宽度和高度

4 个版本

0.3.1 2024年2月8日
0.2.2 2022年5月2日
0.2.1 2022年4月30日
0.2.0 2022年4月24日

#72 in 图像

Download history 1374/week @ 2024-04-27 1189/week @ 2024-05-04 903/week @ 2024-05-11 1505/week @ 2024-05-18 1198/week @ 2024-05-25 842/week @ 2024-06-01 1038/week @ 2024-06-08 1805/week @ 2024-06-15 1432/week @ 2024-06-22 1464/week @ 2024-06-29 1828/week @ 2024-07-06 1272/week @ 2024-07-13 1306/week @ 2024-07-20 1525/week @ 2024-07-27 1715/week @ 2024-08-03 3017/week @ 2024-08-10

7,725 每月下载量

MIT 许可证

42KB
912

imsz

测试状态 许可证 参考C API

从图像文件中尽可能少地读取字节来获取宽度和高度。

这是从 scardine/imsz 分支出来的一个版本,增加了对更多文件格式的支持,但为了更符合 Rust 的风格,打破了 API 兼容性。它还提供了一个 C 库包装器。有关如何开始的更多信息,请参阅提到的链接。

该库本身没有依赖项,但示例二进制文件使用了 clap

用法

有一个简单的示例二进制文件

$ cargo run -q --example imsz testdata/image.gif
testdata/image.gif: GIF, 32 x 16

$ cargo run -q --example imsz -- --help
imsz 0.3.0
Paulo Scardine <[email protected]>, Mathias Panzenböck <[email protected]>

USAGE:
    imsz [FILES]...

ARGS:
    <FILES>...    

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

相关部分

use imsz::imsz;

let info = imsz(filename)?;
println!("{}: {}, {} x {}", filename, info.format, info.width, info.height);
// testdata/image.gif: GIF, 32 x 16

// or for already opened files:
let info = imsz(File::open(filename)?);

// or for in memory buffers:
let info = imsz(b"\x89PNG\r\n\x1a\n...");

// or for *anything* implementing Read and Seek:
use imsz::imsz_from_reader;

let mut file = BufReader::new(File::open(filename)?);
let info = imsz_from_reader(&mut file)?;

支持的文件格式

  • AVIF
  • BMP
  • DDS
  • DIB
  • GIF
  • HEIC/HEIF
  • ICO
  • JPEG
  • JPEG 2000
  • PCX
  • PNG
  • PSD
  • OpenEXR
  • QOI
  • TGA
  • TIFF
  • VTF
  • WEBP
  • XCF

不保证正确或完整实现。

无运行时依赖