In our previous article we looked at some Viewers which could display Exif data for you. Sometimes, you need to programmatically access the data. So we finish our series of articles with some suggestions to try. There is a good selection of free and commercial tools for reading EXIF data from Image files, depending on the language you are writing your code in. Not all tools support all image formats (especially Heic). Here is a selection of 5 Open Source or Commercial tools which you may find useful as a starting point. Please feel to add your own suggestions.
- libheif is an Open Source library for accessing image data. While this is written in C, there are a number of wrappers for other languages including Python. There is a really good tutorial for this on Youtube.
- exiv2 is a an Open Source C++ library for reading Exif data.
- ExifTool is an Open Source Perl library for reading Exif data from multiple file types.
- Leadtools is a commercial toolkit for Images.
- JDeli is our own commercial image library. JDeli allows you to extract Heic Image metadata in two lines of Java code.
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