HEIC stands for “High-Efficiency Image File Format”. It is a complex lossy file format for storing full color bitmapped images. It was developed by Apple but is an Open Standard. The filename extension for Heic files is: .heic
Here are some other questions about Heic you might also want to ask. If you have any other questions, please add a comment and we will try to answer.
What is it used for?
This format is used for maintaining image quality with smaller file sizes when compared to traditional formats like JPG. Heic files can be specially useful for extracting geocoding information on Apple platforms.
Why is it popular?
Apple uses it as the default option for many of its applications on its iPhones and other products since 2017. So, many people are using the image format without even realising it.
How well-supported is Heic?
It is very well supported by Apple on both its phones and computers (Preview will happily open Heic files). Both PhotoShop and the free image editor GIMP can open and convert Heic files for you. Windows Photos also support Heic images.
How can I learn about the image format?
You can get a (paid) download of all the Heic technical documentation from ISO. The standard is open but not free.
Is it possible to convert HEIC to JPG?
Yes. You can convert HEIC to JPG and vice versa. You will lose any transparency if you convert from HEIC to JPG.
Is it possible to convert HEIC to PDF?
Yes. You will need to print the HEIC (most printers offer a print as PDF), export as PDF in a graphics package such as Mac Preview or use a third party tool such as our JDeli library.
How to open Heic files in Java?
There is a free Nokia implementation on GitHub and Apache Tika includes a Heic parser.
There are several commercial Heic solutions available. Our JDeli library allows you to read, write and display Heic files.
Are you a Java Developer working with Image files?
// 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);
Why do developers choose JDeli over free alternatives?
- Works with newer image formats such as AVIF, HEIC, JPEG XL, WEBP
- Better support than alternatives for JPEG, PNG, TIFF.
- Prevent JVM crashes caused by native code in other image libraries
- Better performance than other popular Java image libraries