Sylwia Dorota Kedzia Sylwia is a Java developer. She is very passionate about programming and all things Polish.

How to Read JPEG2000 in Java

1 min read

In this article, I will talk you through on how to read JPEG2000 images into a BufferedImage using ImageIO/JAI and our JDeli Image Library. So let us start from the basics, what is JPEG2000?

What is JPEG2000?

JPEG2000 is an image decoding standard that was originally created as an update of the well known JPEG Format which was introduced in the year 2000 by the Joint Photographic Experts Group committee. It uses lossy compression image mode that is based on discrete wavelet transformation.

JPEG2000 compared to JPEG offers:

  1. A better higher compression performance,
  2. Outputs of multiple resolutions,
  3. The option for both lossless and lossy compression,
  4. Improved noise resilience,
  5. Flexibility in file formats,
  6. Bit depth support,
  7. advance support for transparency and alpha planes.

The filename extensions commonly associated with JPEG 2000 are: .jp2, .j2k, and .jpx.

Example Java code to read a JPEG2000 image in Java:

Here is some sample code using ImageIO/JAI and JDeli. (ImageIO needs JAI installed to support JPEG2000).

Using JAI/ImageIO

Javadoc and Download for JAI (ImageIO is part of JDK)

//Read Image from File
File myJPegFile = new File("ImageAsJPeg.jp2");
BufferedImage image = ImageIO.read(myJPegFile);

Using JDeli

Javadoc and Download

You can easily replace ImageIO (and get much better support for JPEG2000 files) by just changing ImageIO.read to JDeli.read:

//Read Image (can also be OutputStream or byte array)
File myJpegFileFile = new File("ImageAsJPeg.jp2"); 
BufferedImage image = JDeli.read(myJPegFile);

Or you can use the JDeli Jpeg2000Decoder directly:

Jpeg2000Decoder decoder = new Jpeg2000Decoder();
BufferedImage decodedImage = decoder.read(imageByteData);

Features Included in JDeli JPEG2000 Decoder:

  • Colorspace : Bitlevel, Grayscale, RGB, CMYK and YCCK images
  • Bits Per Sample : 1 to 16
  • In additionally JDeli offers fastest JPEG2000 Decoding capability in java

Why use JDeli?

JDeli offers a range of advantages over ImageIO and alternatives, including:

  • prevents heap related JVM crashes
  • implements unsupported image formats
  • reduce output file size
  • improve read/write performance
  • supports threading
  • superior image scaling algorithms

Learn more about JDeli, or download to try it yourself.

This article is part of our series on reading and writing image files in Java.

Sylwia Dorota Kedzia Sylwia is a Java developer. She is very passionate about programming and all things Polish.

Leave a Reply

Your email address will not be published. Required fields are marked *

IDRsolutions Ltd 2019. All rights reserved.