jpegxl-rs

jpegxl-rs is a safe wrapper over jpeg-xl library. Check out the original library and the bindings.

Building

The library build jpeg-xl and link to libc++ by default. Optionally, you can set --features without-build, then set the include path and lib path with DEP_JXL_INCLUDE and DEP_JXL_LIB respectively.

If you don't want to depend on C++ standard library, use --features without-threads to disable default threadpool.

You need to have a working llvm environment.

Usage

Decoding

rust let sample = std::fs::read("test/sample.jxl")?; let mut decoder: JXLDecoder<u8> = decoder_builder().build(); let (info, buffer) = decoder.decode(&sample)?;

Set output pixel paramaters

rust // Pixel type is set by type parameter let mut decoder: JXLDecoder<u16> = decoder_builder() .num_channel(3) .endianness(Endianness::Big) .align(8) .build();

Encoding

rust let sample = ImageReader::open("test/sample.png")?.decode()?.to_rgba16(); let mut encoder = encoder_builder().build(); let buffer: Vec<u8> = encoder.encode( &sample, sample.width() as u64, sample.height() as u64 )?;

image crate integration

The integration is enabled by default. If you don't need it, disable with-image feature.

``` rust

```