In this article, I will cover how to write out images as Heic images in Java. We also have a related article covering how to read HEIC files in Java.
ImageIO does not write HEIC file types so you will need to use an external library. We believe that JDeli is the only pure Java implementation available so we will document that. If you are looking for a free solution, we recommend the Nokia library on GitHub (which includes Java wrappers).
What is HEIC?
The filename extension for Heic files is:
How to write an image as a Heic file with JDeli
Step 1 Add JDeli to your class or module path. (download the trial jar).
Step 2 Create a File (or OutputStream) object
File file = new File("/path/to/outputFile.heic"));
Step 3 Pass image, Heic type, and File (or OutputStream) object into write method
JDeli.write(bufferedImage, "heic", file);
In JDeli you can also use a typesafe version
JDeli.write(bufferedImage, OutputFormat.HEIC, file);
HeicEncoderOptions options = new HeicEncoderOptions(); JDeli.write(bufferedImage, options, file);
Why use JDeli to write HEIC files?
JDeli offers a range of advantages over ImageIO and alternatives, including:
- complete implementation of Heic spec
- implements mirroring, rotation and clapping (ie cropping)
- 100% Java implementation
- no dependencies on other Heic libraries
- highly optimized memory usage
- supports threading
Read and write images in Java with one line of code
Read an Image with
BufferedImage image = JDeli.read(streamOrFile);
and write an Image with
JDeli.write(myBufferedImage, OutputFormat.HEIC, outputStreamOrFile)