What is AVIF?
AVIF stands for AV1 Image File Format and is used for storing images and video. It uses the same container format as HEIC images but with potentially better compression. It offers lossy and lossless compression. It offers an alternative to HEIC and JPEG image file formats but is not as well supported in web browsers.
It is an open standard with no patents.
The file name extension for this format is: .avif
Here are some other questions about AVIF 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?
The format has many different use cases. It is an optimal choice for web developers using the format for still images, as it provides rich and vibrant images with a smaller size leading to stable performance and a better user experience.
Differences compared to HEIC
While both use the Heif container, AVIF also uses the AV1 compression format.
Is it better than JPEG?
It may produce better compression than JPEG but JPEG is better supported by web browsers and general software. It is possible to convert AVIF to JPG using third-party software.
Is it possible to convert AVIF to PNG?
Yes. The reason many people do this is because PNG is a much better supported Image file format. To convert AVIF to PNG you will need to use a third-party software library.
How to open AVIF files in Java?
ImageIO (the built-in Java Image library) does not support AVIF images.
We are currently working an AVIF Decoder for our JDeli library to read, write and display AVIF 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