imsz

Crates.ioimsz
lib.rsimsz
version0.3.1
sourcesrc
created_at2022-04-24 01:35:16.543812
updated_at2024-02-08 20:24:14.74411
descriptionGet width and height from an image file reading as few bytes as possible.
homepage
repositoryhttps://github.com/panzi/imsz
max_upload_size
id572895
size61,733
Mathias Panzenböck (panzi)

documentation

https://panzi.github.io/imsz/imsz/

README

imsz

Test Status License ReferenceC API

Get width and height from an image file reading as few bytes as possible.

This is a fork of scardine/imsz that adds support for more file formats, but also breaks API compatibility in order to be more idiomatic Rust. It also provides a C library wrapper. For more information on how this started see the mentioned link.

The library itself has zero dependencies, but the example binary uses clap.

Usage

There is a simple example binary:

$ 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 <paulo@scardine.com.br>, Mathias Panzenböck <grosser.meister.morti@gmx.net>

USAGE:
    imsz [FILES]...

ARGS:
    <FILES>...    

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

The relevant parts:

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)?;

Supported File Formats

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

No guarantees of correct or complete implementation are made.

Related Work

Commit count: 97

cargo fmt