Compress and Decompress data in Java

JDeli is a fast Java compression library written in pure Java.

Compression and decompression in Java using a couple of lines of code

// Decompress byte[]
final ASCII85FilterOptions options = new ASCII85FilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final ASCII85FilterOptions options);

// Decompress InputStream
final ASCIIHexFilterOptions options = new ASCIIHexFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final ASCIIHexFilterOptions options, final OutputStream outputStream);
// Decompress byte[]
final ASCIIHexFilterOptions options = new ASCIIHexFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final ASCIIHexFilterOptions options);

// Decompress InputStream
final ASCIIHexFilterOptions options = new ASCIIHexFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final ASCIIHexFilterOptions options, final OutputStream outputStream);
// Deflate byte[]
final FlateFilterOptions options = new FlateFilterOptions();
options.setMode(FilterOptions.FilterMode.COMPRESS);
JDeli.filter(final byte[] raw_data, final FlateFilterOptions options);

// Inflate byte[]
final FlateFilterOptions options = new FlateFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final FlateFilterOptions options);

// Deflate InputStream
final FlateFilterOptions options = new FlateFilterOptions();
options.setMode(FilterOptions.FilterMode.COMPRESS);
JDeli.filter(final InputStream inputStream, final FlateFilterOptions options, final OutputStream outputStream);
 
// Inflate InputStream
final FlateFilterOptions options = new FlateFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final FlateFilterOptions options, final OutputStream outputStream);
// Compress byte[]
final CCITTOptions options = new CCITTFilterOptions();
options.setMode(FilterOptions.FilterMode.COMPRESS);
JDeli.filter(final byte[] raw_data, final CCITTFilterOptions options);

// Decompress byte[]
final CCITTFilterOptions options = new CCITTFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final CCITTFilterOptions options);

// Compress InputStream
final CCITTOptions options = new CCITTFilterOptions();
options.setMode(FilterOptions.FilterMode.COMPRESS);
JDeli.filter(final InputStream inputStream, final CCITTFilterOptions options, final OutputStream outputStream);

// Decompress InputStream
final CCITTFilterOptions options = new CCITTFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final CCITTFilterOptions options, final OutputStream outputStream);
// Decompress byte[]
final DCTFilterOptions options = new DCTFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final DCTFilterOptions options);

// Decompress InputStream
final DCTFilterOptions options = new DCTFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final DCTFilterOptions options, final OutputStream outputStream);
// Decompress byte[]
final JBIG2FilterOptions options = new JBIG2FilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final JBIG2FilterOptions options);

// Decompress InputStream
final JBIG2FilterOptions options = new JBIG2FilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final JBIG2FilterOptions options, final OutputStream outputStream);
// Decompress byte[]
final JPXFilterOptions options = new JPXFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final JPXFilterOptions options);

// Decompress InputStream
final JPXFilterOptions options = new JPXFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final JPXFilterOptions options, final OutputStream outputStream);
// Compress byte[]
final LZWFilterOptions options = new LZWFilterOptions();
options.setMode(FilterOptions.FilterMode.COMPRESS);
JDeli.filter(final byte[] raw_data, final LZWFilterOptions options);

// Decompress byte[]
final LZWFilterOptions options = new LZWFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final LZWFilterOptions options);

// Compress InputStream
final LZWFilterOptions options = new LZWFilterOptions();
options.setMode(FilterOptions.FilterMode.COMPRESS);
JDeli.filter(final InputStream inputStream, final LZWFilterOptions options, final OutputStream outputStream);

// Decompress InputStream
final LZWFilterOptions options = new LZWFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final LZWFilterOptions options, final OutputStream outputStream);
// Decompress byte[]
final RunLengthFilterOptions options = new RunLengthFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final byte[] raw_data, final RunLengthFilterOptions options);

// Decompress InputStream
final RunLengthFilterOptions options = new RunLengthFilterOptions();
options.setMode(FilterOptions.FilterMode.DECOMPRESS);
JDeli.filter(final InputStream inputStream, final RunLengthFilterOptions options, final OutputStream outputStream);

JDeli is the only Java library to include all these features...

Read
  • AVIF (soon)
  • BMP
  • HEIC
  • GIF
  • PNG
  • JPG
  • JPEG 2000
  • JPEG XL
  • TIFF
  • WEBP
All formats
Write
  • AVIF (soon)
  • BMP
  • HEIC
  • GIF
  • JPG
  • JPEG 2000
  • JPEG XL
  • PNG
  • TIFF
  • WEBP
All formats
Process
  • Blur
  • Brighten
  • Clip
  • Crop
  • Mirror
  • Resize
  • Rotate
  • Sharpen
  • Thumbnail
  • Watermark
All operations
ImageIO integration
  • Works transparently with existing code
  • No DLLs or 3rd party code used
  • Any feature can be enabled/disabled
Learn more
Change image format
  • Direct conversion
  • Translate any supported formats
  • Process/modify image during conversion
Learn more
Compress/Decompress Data
  • Ascii85, AsciiHex, RLE
  • CCITT, DCT, JBIG2, JPX
  • Flate, LZW
Learn more

Why use JDeli when there are Open-source image libraries?

1.

Offers features not available elsewhere such as AVIF(soon) and HEIC support

2.

Written in 100% pure Java so no native dependencies or command-line tools.

3.

Works with any existing Java codebase as an ImageIO plugin

4.

Provides significant performance benefits and lower memory usage for batch operations

5.

Makes no calls to any external system or third party library.

6.

Fast response time on official support, frequent updates, and commercial licensing

Trusted by Enterprise Companies around the World

Abacus logo
Citi logo
Clearsense logo
Honeywell logo
Los Alamos National Lab logo
Mercedes-Benz Bank logo

“I was looking specifically for a Java-based compression technique, I'm happy because it's taking up less space on the server.”

- Kevin Lauder (ISC Engineering Senior Manager)

Extend Java capabilities

(works with your existing code!)

1.

Adds new image formats (AVIF, HEIC, JPEG XL, WEBP)

2.

Improves support for common file formats (JPEG, JPEG2000, PNG, TIFF)

3.

Up to 3X improved performance (see comparison)

Try JDeli for Free


How do you achieve such good performance? So many companies attempting writing image codecs in Java end up in far slower performance or claim better performance requires native code.

- David E. (Lead developer and founder of jAlbum)

Key Benefits

High Performance

JDeli encoders and decoders are faster than alternatives, making JDeli perfect for applications where performance matters.

File Security

The software runs securely on your servers. It makes no callback or access to the cloud so critical customer data is always secure.

Simple installation

Provides a simple set of static methods to decompress/compress data streams and implements Input/OutputStream implementations

Ongoing development

Nightly and stable builds with regular new features and an expanding range of compression formats supported.

Premium support

Support is provided quickly and directly by our in-house JDeli Developers on email or via our online portal.

No third party libraries

JDeli does not use any third-party or system dependencies, avoiding security flaws in other software and JVM crashes from statically linked libraries.

We replaced all our various image processing code with JDeli, which allowed us to smoothly migrate to Java 11. The support from IDR solutions is just great. Whenever we came across a strange image from our customers which JDeli couldn't read properly, IDR fixed it in less than a day.

- Developer in SME Financial Services Company

Straightforward Pricing That Works for You

Server License Distribution License Custom License
Price $1,600 USD/ year per server $5,400 USD/ year per application $15,000 USD/ year
Usage Run on cloud or on premise server with up to 12 cores Distribute JDeli in a named application (not Microservice) Distribute JDeli in a named application or Microservice
License Standard shrink-wrapped EULA license Standard shrink-wrapped EULA license Option to customise EULA license
Non-Production Test and
Development Servers
Included Included Included
Included Support Standard support via email/service portal Standard support via email/service portal Premium support via email/service portal/ Zoom
New Releases Access
High priority tickets Up to 3 high priority support tickets Up to 3 high priority support tickets Up to 12 high priority support tickets
Source Code Access - -
Free Consultancy - - Up to 5 hours free consultancy or development time
Development plan update Call - - Quarterly

Not ready to buy? You may also Try JDeli for Free or Ask a Question