Crate jpegxl_rs[−][src]
Expand description
A safe JPEGXL wrapper over jpeg-xl
library. Check out the original library
and the bindings.
Building
The library build jpeg-xl
and link to lib(std)c++
by default. Optionally, you can use system-jxl
feature to
dynamically link to it. If you don’t have it in the default include and library paths,
set them with DEP_JXL_INCLUDE
and DEP_JXL_LIB
respectively.
If you don’t want to depend on C++ standard library, disable threads
feature.
Usage
Currently, u8
, u16
and f32
(partial) are supported as pixel types. u32
is in the header but not implemented.
Note: f32
with alpha channel is not supported in encoder.
Decoding
let mut decoder = decoder_builder().build()?;
// Multi-threading
use jpegxl_rs::ThreadsRunner;
let runner = ThreadsRunner::default();
let mut decoder = decoder_builder()
.parallel_runner(&runner)
.build()?;
// Customize pixel format
let mut decoder = decoder_builder()
.num_channels(3)
.endianness(Endianness::Big)
.align(8)
.build()?;
decoder.decode_to::<u8>(&sample);
// You can change the settings after initialization
decoder.num_channels = 1;
decoder.endianness = Endianness::Native;
Encoding
use image::io::Reader as ImageReader;
let sample = ImageReader::open("test/sample.png")?.decode()?.to_rgba16();
let mut encoder = encoder_builder().build()?;
let buffer: EncoderResult<f32> = encoder.encode(&sample, sample.width(), sample.height())?;
Set encoder options
let mut encoder = encoder_builder()
.lossless(true)
.speed(EncoderSpeed::Falcon)
.build()?;
// You can change the settings after initialization
encoder.lossless = false;
encoder.quality = 3.0;
image
crate integration
The integration is enabled by default. If you don’t need it, disable image-support
feature.
use jpegxl_rs::image::ToDynamic;
use jpegxl_rs::decoder_builder;
use image::DynamicImage;
let sample = std::fs::read("test/sample.jxl")?;
let decoder = decoder_builder().build()?;
let img = decoder.decode(&sample)?.into_dynamic_image();
Re-exports
Modules
Decoder of JPEG XL format
Encoder of JPEG XL format
image-support
image
crate integration
Memory manager interface
Parallel runner interface
Enums
Errors derived from JxlDecoderStatus
Errors derived from JxlEncoderStatus
Type Definitions
Endianness of the pixels