Monday, December 5, 2022

Stay in touch

Become a better photographer. Sign up for tips, tutorials & news designed to level up your photography skills.

Latest Posts

What are image file formats?

Image file formats are probably one of the least understood aspects of photography that we deal with everyday without fully understanding exactly what they are. Most cameras provide the choice between at least two image formats, RAW & JPG. What are they and why would you as a photographer need to choose one over the other?

What is the RAW image format?

The RAW format is supposed to contain the raw data from the sensor. To put it simply, the data from the sensor and the data we look at and view as a picture are not one in the same. Once the image is converted to a bitmap (JPG, BMP, TIFF) some information is lost about the image which makes it less editable. If you are planning on refining your images in Lightroom or similar your best bet is to shoot in RAW.

If you have large memory cards you are safe shooting RAW all you want, otherwise you can try a compressed RAW or even JPG.

What is the JPG image format?

JPG differs from RAW as the image data has been converted into RGB values. This format is sometimes referred to as a bitmap or raster image. All image formats aside from RAW that I know of use RGB values that make all the colors in the image. Thus every format on this list can be considered an RGB bitmap or raster image format. In such formats Red, Green, and Blue are combined together on individual pixels to make all the colors of the rainbow, or as many colors as the file format supports. In the case of JPG the format is currently limited to 8 bits per pixel. This means that for each R, G, or B value on each pixel there are 255 possible shades available. This reduced amount of information is partly why JPG files are much smaller than RAW files. In addition to this JPG files also use what is referred to as “lossy” compression to reduce the file size even further. This “lossy” compression is called lossy because using it causes image data to be irretrievably lost (in theory). Essentially the way JPG works is that it reduces the amount of information where the algorithm thinks it will be least visible such as dark areas of the image or low contrast areas where it might be hard to make out specific details anyway.

The good news is that JPG is highly evolved and very good quality even when substantially compressed.

The bad news is JPG currently only supports 8 bits per pixel which is considerably less than what most cameras can produce which is as high as 16 bits and usually in the 12-14 bits per pixel range. This means that saving in JPG just throws away much of the subtlety and fine gradations that the image would otherwise have had.

For many reasons this ends up being ok for internet use but as computer monitors improve eventually people may decide that JPG is not good enough.

What is the TIFF image format?

TIFF files have support for a variety of advanced functions like lossless compression, opacity, layers, and 16 bits of data per pixel. One downside of TIFF is that they’re limited to 4GB in size. That is a very large file but for certain ultra high resolution applications TIFF might be insufficient. Like JPG, TIFF files lose the ability to change certain image parameters with no quality loss which only RAW files retain. The problem with TIFF files is that they’re large so are generally not a good choice for internet use. The only real uses for TIFF are to transport a finished edit to a printer or to serve as an archival format for 16 bit images. The inclusion of lossless compression makes TIFF pretty well suited to the latter task.

What is the PNG image format?

The nice thing about PNG is that it’s something like a mini TIFF. It is uncompressed, supports image transparency, and is fully supported by most web browsers. PNG’s are often preferable to JPG for website UI graphics because JPG will sometimes transform image colors during the compression process resulting in small but noticeable color mismatches in the UI. PNG’s are also nice because they support transparency which is again very useful for website UI’s.

As far as photography goes PNG is hit and miss. It is substantially larger than JPG and unnecessary as photos do not require transparency. It is also lacks the compression that JPG offers which means you’ll pay a heavy price on page loads that have large PNG’s on them. While PNG is only 8 bits per pixel just like JPG the resulting file sizes are much higher especially when getting into the ultra high resolution image that today’s cameras produce. It’s better to just use 8 bit TIFF files instead of PNG if a lossless 8 bit format is desired.

What is the PSD image format?

PSD is Adobe Photoshop’s proprietary image format and it provides a way for Photoshop to save various kinds of information about your Photoshop file, specifically all the different layers you might have in your file. PSD is not a good choice for photos though. PSD is not really designed for photos but for complex Photoshop documents with lots of layers in them. As such PSD files tend to be quite large which makes them problematic. I have had PSD’s rocket past the 2GB file size range with just a few layers added. Adobe tends to store file data as XML which is extremely inefficient and simply piles on massive amounts of baggage that nobody wants or needs.

What is the WEBP image format?

WEBP is file format created by Google. I don’t know why they made it. They make lots of claims that it is better than JPG but that doesn’t seem to have panned out. The good news on WEBP is that it is fully compatible with the internet as of right now. The bad news is that it doesn’t seem to be better than JPG and might actually be worse which begs the question of why did they even bother.

What is the HEIF image format?

A newer image format that has become available for some cameras is the HEIF image format owned by Apple corporation.

HEIF claims to be better than JPG. I think they’re just about the same. Most likely on some files one might be slightly better than the other. JPG has been improved over the years which means its not so easy to beat anymore. When JPG first came out it was very easy to see issues with JPG compression, the people responsible for it later added more flexibility and accuracy. You have to go pretty low on the file size now to see issues with a JPG these days. The point being, I don’t see a huge drive for HEIF even if it is slightly better than JPG.

One claim that HEIF makes is that it can save images in 16 bits per pixel. Well, so does TIFF. If you’re that obsessed with your image quality why use a lossy compression algorithm like HEIF? Just use 16 bit TIFF and one of the built in compression options TIFF is compatible with.

What is nice about HEIF is that it can save in different bit depths like 10 bits per pixel, so if you’re interested in near JPG but not quite levels of compression it will do that.

Most computer monitors are still 8 bits per pixel so the actual fact is if an image is finished and published you won’t see a difference between HEIF and JPG. If the vast majority of computer monitors ever display more than 8 bits per pixel there might be a need for HEIF.

Another fact to consider is the role of AI and machine learning algorithms in the future. It might be the case that all a machine algorithm needs is 8 bits of data and it can infer and scale an 8 bit image up to 10 bits with ease. This type of thinking is already in play using dithering. Dithering is a way of smoothing out gradients in images when the bit depth does not support actually displaying a smooth gradient.

Companies such as NVIDIA are working on more advanced ways of up-scaling for video games. The same thought processes could be applied to images as well. As such there may never be a real need for something like HEIF.

What is the BMP image format?

BMP is an uncompressed RGB raster format. It’s really old and probably the most basic format ever made. Most file formats are a specialized way of storing image data. This one is the least specialized. It’s just a box for holding RGB values and it doesn’t even specify a bit depth.


Please enter your comment!
Please enter your name here