In this article, I will show you how to read JPEG XL images in Java. JPEG XL is a relatively new format so it is not currently supported by Apache Commons Imaging.
How to read JPEG XL images in Java with Jxlatte
Jxlatte is a ‘work-in-progess’ JPEG XL Decoder which can be used to convert to better supported Image formats using this code
java -jar jxlatte.jar samples/art.jxl output.png
How to read a JPEG XL image with Java ImageIO
Java ImageIO is able to read these images with an additional plugin. There are some Java wrappers for the JPEG-XL library here. These allow you to read the image to a BufferedImage but do not offer a totally native solution.
BufferedImage img = ImageIO.read(Paths.get("/foo/bar.jxl").toFile())
How to read a JPEG XL image in Java with JDeli
JDeli supports reading JPEG XL image files out of the box. You can convert JPEG XL files into other formats directly in JDeli. You can also directly read any JPEG XL image into a Java BufferedImage with this code.
- Add JDeli to your class or module path (download the trial jar).
- Create a File handle, InputStream pointing to the raw JPEG XL image. You can also use a byte[] containing the image data.
- Read the JPEG XL image into a BufferedImage
and the Java code to read JPEG XL…
File file = new File("/path/to/image.jxl");
BufferedImage img = JDeli.read(file);
Are you a Java Developer working with Image files?
// Read an image
BufferedImage bufferedImage = JDeli.read(dicomImageFile);
// Read an image
BufferedImage bufferedImage = JDeli.read(heicImageFile);
// Write an image
JDeli.write(bufferedImage, "heic", outputStreamOrFile);
// Read an image
BufferedImage bufferedImage = JDeli.read(jpegImageFile);
// Write an image
JDeli.write(bufferedImage, "jpeg", outputStreamOrFile);
// Read an image
BufferedImage bufferedImage = JDeli.read(jpeg2000ImageFile);
// Write an image
JDeli.write(bufferedImage, "jpx", outputStreamOrFile);
// Write an image
JDeli.write(bufferedImage, "pdf", outputStreamOrFile);
// Read an image
BufferedImage bufferedImage = JDeli.read(pngImageFile);
// Write an image
JDeli.write(bufferedImage, "png", outputStreamOrFile);
// Read an image
BufferedImage bufferedImage = JDeli.read(tiffImageFile);
// Write an image
JDeli.write(bufferedImage, "tiff", outputStreamOrFile);
// Read an image
BufferedImage bufferedImage = JDeli.read(webpImageFile);
// Write an image
JDeli.write(bufferedImage, "webp", outputStreamOrFile);
Why do developers choose JDeli over free alternatives?
- Works with newer image formats such as AVIF, HEIC, JPEG XL, WEBP
- Better support than alternatives for JPEG, PNG, TIFF.
- Prevent JVM crashes caused by native code in other image libraries
- Better performance than other popular Java image libraries