jpegxl-rs
is a safe wrapper over jpeg-xl
library. Check out the original library
and the bindings.
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.
Instead, you can enable with-rayon
feature to use its threadpool.
You need to have a working llvm
environment.
rust
use jpegxl_rs::*;
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()?;
```rust use jpegxl_rs::*; use image::io::Reader as ImageReader;
let sample = ImageReader::open("test/sample.png")?.decode()?.torgba16();
let mut encoder = encoderbuilder().build()?;
let buffer: Vec
image
crate integrationThe integration is enabled by default. If you don't need it, use without-image
feature.
```rust use jpegxl_rs::image::*; use image::DynamicImage;
let sample = std::fs::read("test/sample.jxl")?;
let decoder: JXLImageDecoder
```