In this article, I will talk you through on how to read JPEG2000 Image into a BufferedImage using ImageIO/JAI and our JDeli Image Library (a complete JPG converter). 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:
- A better higher compression performance,
- Outputs of multiple resolutions,
- The option for both lossless and lossy compression,
- Improved noise resilience,
- Flexibility in file formats,
- Bit depth support,
- advance support for transparency and alpha planes.
The filename extensions commonly associated with JPEG 2000 are:
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
//Read Image from File File myJPegFile = new File("ImageAsJPeg.jp2"); BufferedImage image = ImageIO.read(myJPegFile);
– Using JDeli
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 JpegDecoder 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
JDeli can read and write a very wide range of other image formats including writing JPEG2000. Here is the full list on Image file conversions supported.
You can find more tutorials in our series on handling common image formats in Java, JDeli and other image libraries.