In the world of claims processing and expense reporting, the device in your customer’s pocket is often more advanced than the software running on your server.
The Emerging Challenge: The “HEIC Gap”
This creates a specific, frustrating “gap” that many financial and insurance companies are facing right now. Your users, whether they are employees submitting expenses or clients filing claims, are taking photos with modern iPhones. Apple made HEIC (High Efficiency Image Container) the default standard years ago because it saves space without losing quality.
Why Legacy Systems Struggle
But for the backend systems at banks and insurance firms, HEIC is often a foreign language. While mobile hardware has moved forward, many server-side environments remain locked into legacy imaging libraries that haven’t been updated to handle modern compression standards.
Real-World Friction in Document Intake
The struggle is simple but disruptive: A user snaps a picture of a receipt or a damaged car bumper. They hit upload. And then… the system rejects it, or the back-office team receives a black box file they can’t open.
The Forces Driving Change
This becomes a painful nightmare for engineers working on such systems. In an insurance company, an increase in HEIC files meant that their browser-based application, which only understood JPEGs, was suddenly blind to incoming claims.
The High Cost of Manual Workarounds
The alternatives are rarely good:
- Manual Intervention: You ask the customer to “please convert this to JPEG and re-upload.” This adds friction and frustrates the user.
- Internal Training: You train your staff to manually convert files using desktop tools. This kills productivity and introduces human error.
The Solution: Making the Format Invisible
Streamlining the Integration Process
For these enterprises, the solution wasn’t a massive infrastructure overhaul. It was a targeted implementation that turned a potentially huge project into a small integration task.
Key Capabilities of Native Java Support
By using a Java library that natively understands and decodes HEIC, they could:
- Accept various image formats: Users upload what their phone produces.
- Auto-convert on the fly: The server detects HEIC and silently converts it to a standard format (like JPEG or PNG) for the browser or archive.
- Set and Forget: No more “file type not supported” errors.
There is no need to retrain staff or build complex workarounds. It effectively future-proofs the intake process against whatever format mobile manufacturers decide to use next.
How It Works (Technical Implementation)
Below are examples of how straightforward the code implementation can be to solve this specific struggle in a step-by-step guide.
Code Example: Reading an HEIC Image
- Add JDeli to Your Project: Add JDeli to your class or module path. (download the trial jar ).
- Point to Your Heic Picture: Create a file handle, input Stream pointing to the raw Heic image. Alternatively, you can also use a byte[] containing the image data if your data is in that format.
- Read Heic pictures easily: Use JDeli to read the Heic image into a BufferedImage.
File heicFile = new File("/path/to/image.heic");
BufferedImage image = JDeli.read(heicFile);
Code Example: Converting HEIC to JPEG
- Download the JDeli trial jar.
- Process image if needed (scale, sharpen, lighten, watermark, etc)
- Write out BufferedImage as JPG image file
// Read HEIC image into Java
BufferedImage bufferedImage = JDeli.read(new File("heicImageFile.heic"));
// Process image (Optional)
bufferedImage = operations.apply(BufferedImage bufferedImage);
// Write out BufferedImage as your desired format (JPEG in this example)
JDeli.write(bufferedImage, "jpg", new File("jpgImageFile.jpg"));
The Final Result: Seamless Image Processing
By solving for the “HEIC Gap,” these companies didn’t just fix a bug; they smoothed out the entire customer journey. They moved from a process that required manual hand-holding to one that is automated, invisible, and efficient.
As experienced Java developers, we help you work with images in Java and bring over a decade of hands-on experience with many image file formats.
Are you a Java Developer working with Image files?
// Read an image
BufferedImage bufferedImage = JDeli.read(avifImageFile);
// Write an image
JDeli.write(bufferedImage, "avif", outputStreamOrFile);// 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.