Why do JPEG XL Images cause issues for Java Developers?
ImageIO does not read JPEG XL file types by default so existing Java Applications will not work with them. If you have an existing Java Application using ImageIO you will find it cannot process these images. ImageIO will read JPEG files which are not the same.
In this post, I will cover options to read JPEG XL directly and how to upgrade ImageIO to support JPEG XL files so existing Java Applications which use ImageIO will work (often without having to make any code changes).
What options are there for reading JPEG XL files in Java?
Java does not read JPEG XL images by default so you will need to use an external library or plugin for ImageIO. Commercial libraries like JDeli offer reading support with the option to be added as an ImageIO plugin.
We will cover several options below including our JDeli pure Java library to read JPEG XL files.
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 upgrade ImageIO to read JPEG XL files
It’s actually very simple and can be done without rewriting your existing code!
For example, the code below does not work with ImageIO for JPEG XL images
// Read JPEG XL image into Java with ImageIO
BufferedImage bufferedImage = ImageIO.read(new File("ImageFile.jxl"));
Steps to fix with a plugin:
- Option 1 vavi-image-jpegxl plugin for ImageIO
- Option 2 Download the JDeli trial jar with our ImageIO plugin and follow the support documentation to install
How to read a JPEG XL image in Java directly with JDeli
JDeli is the best enterprise-level Java image library for quick development. 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);
JDeli, our pure java image library has JPEG XL support for reading, you can read more about it on our support site.
Are you a Java Developer working with Image files?
// Read an image
BufferedImage bufferedImage = JDeli.read(avifImageFile);
// 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);
What is JDeli?
JDeli is a commercial Java Image library that is used to read, write, convert, manipulate and process many different image formats.
Why use JDeli?
To handle many well known formats such as JPEG, PNG, TIFF as well as newer formats like AVIF, HEIC and JPEG XL in java with no calls to any external system or third party library.
What licenses are available?
We have 3 licenses available:
Server for on premises and cloud servers, Distribution for use in a named end user applications, and Custom for more demanding requirements.
How does JDeli compare?
We work hard to make sure JDeli performance is better than or similar to other java image libraries. Check out our benchmarks to see just how well JDeli performs.