Return to Digital Photography Articles

JPEG Rotation and EXIF Orientation

Digital Cameras with orientation sensors allow auto-rotation of portrait images. Unfortunately, support for this feature is not widespread or consistently applied.

Digital Cameras with Orientation Sensors

Many newer digital cameras (both dSLR and Point & Shoot digicams) have a built-in orientation sensor. Virtually all Canon and Nikon digital cameras have an orientation sensor. The output of this sensor is used to set the EXIF orientation flag in the image file's metatdata to reflect the positioning of the camera with respect to the ground. Canon calls their sensor the "Intelligent Orientation" sensor. It is presumably a 2-axis tilt sensor, allowing 4 possible orientations to be detected (shown in the left side of the diagram below).

EXIF Orientation Flag Values

 

Note that one would only expect the four orientation settings shown on the left to be possible with a digital camera. The other four settings would imply that the resulting image was flipped horizontally before recording. Unless the camera were to encode the image right-to-left or know that you were taking a photo in a mirror, I don't see how these values will ever be used.

The values 1-8 represent the following descriptions (as shown by utilities that support EXIF field decode):

EXIF Orientation Value Row #0 is: Column #0 is:
1TopLeft side
2* TopRight side
3BottomRight side
4* BottomLeft side
5* Left sideTop
6Right sideTop
7* Right sideBottom
8 Left sideBottom

NOTE: Values with "*" are uncommon since they represent "flipped" orientations.

Auto-rotation in Digital Cameras

While your digital camera may include an option to "auto-rotate images" due to the camera's orientation, this is almost always just a "virtual rotation". A flag is set to indicate to the viewing software / LCD preview which way to rotate the image before display, rather than rotating the image content itself.

As lossless image rotation is a fairly compute-intensive operation, digital cameras are not likely to include true lossless rotation after capturing the photo. The CCD/CMOS sensor hardware is designed to stream raw data in a particular direction (e.g. rows then columns), and so it may be hard to incorporate true auto-rotation in-camera without a performance impact to continuous shooting (frames per second).

Software Support for Orientation

While there are countless software programs available today that display JPEG images, only a subset of them actually interpret the EXIF Orientation flag. Just like color management, many programs simply display the JPEG image as it is stored, and completely ignore any extra details stored in the file's metadata. The most important of these additional details is the Orientation flag, stored in the JPEG APP1 marker under EXIF IFD0.

Application Orientation Supported?
Windows Picture and Fax ViewerNo
IrfanView Yes (need to enable)
Photoshop Yes

IrfanView Auto-rotation

In IrfanView, auto-rotation is not enabled by default. To ensure that images are auto-rotated, you will find the option located under Options->Properties in the JPG/PCD/GIF tab.

Windows Picture and Fax Viewer

Surprisingly, the Windows Picture and Fax Viewer (built into Windows XP) does not support the EXIF orientation flag. This is surprising, as the makers have obviously thought enough to support lossless rotation functions. So, what you will see shown by the viewer is the real image data (assuming landscape orientation), without respecting any indication from the camera as to the real orientation of the image.

Beware of Rotating Photos in Windows Picture and Fax Viewer!

Another surprising detail is that if you decide to perform lossless image rotation (by using the Rotate Clockwise or Rotate CounterClockwise buttons), the EXIF Orientation flag is removed! As the flag is removed, if you do a double-rotation on a portrait photo (rotate, then rotate in the opposite direction), the resulting orientation observed by other viewers such as Photoshop will be wrong!

In fact, when you use the rotate functions of this utility, most of the image metadata (camera information, shot details, makernotes, etc.) are deleted. Therefore, I strongly recommend against using this program to rotate any of your digital photos.

I have also noticed that some images which were rotated that don't conform to 16x16 pixel multiples, the quantization tables don't appear to be rotated properly.

Because many new digital photographers may not be aware of this, Nikon even went so far as to issue a press release to warn of the potential dangers.

  • NOTE: The damage is done as soon as you press one of the rotate buttons . The disk icon is just for copying the file and should not be thought of as a Save button!

The following table details some of the metadata corrupted / modified by Windows Picture and Fax Viewer:

RemovedAddedModified
IFD0-Orientation IFD0-x1001
IFD0-x1002
IFD0-xA401
IFD0-xA402
IFD0-xA403
 
SubIFD-ExifInteroperabilityOffset
SubIFD-CustomRendered
SubIFD-ExposureMode
SubIFD-WhiteBalance
SubIFD-SceneCaptureType
  SubIFD-MakerNote
SubIFD-UserComment
MakerNotes: Nearly all fields zeroed
out except: SerialNumber, ImageNumber
   

 

Note that, in general, most image editors (such as Photoshop, Lightroom and many others) do not rotate images losslessly. This is made obvious by the fact that the Save function provides compression quality options (eg. 1-12, High, Low, etc.) and is therefore applying [lossy] JPEG recompression to your image content.

Auto-Rotation Utilities

There are several tools that allow the image content to be rotated losslessly in software, based on the information stored in the EXIF orientation flag. By far the best time to perform this is during image import (e.g. from memory card). Most import applications (such as DownloaderPro) can do this during the copy operation (from memory card to hard drive). Doing so ensure that all programs can see the image properly rotated, without having to rely on the EXIF Orientation flag. This means that even programs such as Microsoft's Windows Picture and Fax Viewer will also show correct orientation for portrait / vertical images.

Most programs will rotate the image content and then update the Orientation flag to reflect the new orientation (usually a value of 1), while still leaving other metadata intact.

 


Reader's Comments:

Please leave your comments or suggestions below!
2012-01-11ao7
 Useful article.

Found my way to JPEG-EXIF_autorotate which worked well for me.

Along the way I tried EXIFeditor and after a few attempts thought there might be an easier way (this is probably a more powerful programme, though fiddlier).

I'm using Vista with all the updates, Canon Powershot G9. Surprised there isn't something in ZoomBrowser or Picasa which does this.
2011-12-23Angkhana
 It's very helpful.
2011-12-18uk_rn
 hi.. im having problem with my iphone 4s pics... i cant rotate the pics when i copied it to my pc.. it sucks bigtime! i use to have th iphone4 and i never had a problem with...i've read your article cant actually grasp the meaning behind it... thanks
2011-12-06Fjord Lipweg
 Much to my befuddlement, there are webcams which, by default, reverse the video capture so that it displays on the screen like a mirror, and its snapshots also are. I wouldn't be surprised if these snapshots are encoded with flipped orientation.
2011-11-10John Foster
 I have an Apple iPhone 4S that I use for taking hockey game videos. The Apple Camera app works really well. There are two other camera apps ( CP Pro and Top Camera) I have been playing with. They both allegedly support a modest zoom capability that would be useful for me.
Is there a Mac OSX ( GUI, not command line in Terminal) utility that will show me the Orientation Flag values for files taken by these three camera apps after I download the files to may MacBook Pro?
I would like to prove to support forum folks for Plex and VLC that their software seems to be ignoring these flags.
2011-05-03Michael Lee
 I think it bears repeating that Photoshop and Lightroom do not rotate JPEGs losslessly. They acknowledge the rotation tag, but don't use them for rotation. As you can tell, I'm a firm believer in lossless rotation, and if a user does nothing else losslessly, he should at least rotate original JPEGs without incurring image loss right from the get go. Cal, I think you should have gone one step further and added these two (very popular) software in the "Beware" paragraph.
 Thanks Michael! -- I have now added a note to that section to remind readers of this fact.
2011-02-20Simon
 Hi again - a follow-up to my comments yesterday.

I suppose that if you want to have a complete uber-guide to EXIF Orientation, then you should really have 2 diagrams, though I guess that this is implied in my previous comment anyway.

Image 1 would be a graphical representation of EXIF Spec, which you already describe in your table, and which I guess is what everyone intuitively expects your existing diagram to be, but isn't. This would have the numbers 6 and 8 reversed, and could be described as something like:
"The VIRTUAL orientations of image 1 AFTER applying EXIF Orientation
(or how to display actual image 1 as virtually rotated images 2-8)"

Image 2 would then be your existing diagram, then described as something like:
"The ACTUAL orientation of image 1 BEFORE applying EXIF Orientation
(or how to display actual images 2-8 as virtually rotated image 1)"

Sorry if I've already said too much, but I'm sure you know what it's like to have an itch you can't scratch!

Cheers again, Simon.
 Finally had some time to take a good look at this. You're totally right. I thought for a while about the best way to represent this and I have decided to recreate diagrams showing the original "real-world" view (from the camera), the encoded JPEG view and finally the screen view (after rotation). I think this should be much clearer and hopefully I have the values correct now. Thanks so much for digging into this!
2011-02-19Simon
 Hi - I too scratched my head over 6 and 8 possibly being the wrong way round, but I now see that they aren't - maybe. It all depends upon what you are trying to depict.

The TABLE describes how a single image appears AFTER it has been rotated with various EXIF Orientations.

But the DIAGRAM shows what EXIF Orientations are applied to various camera rotations, that is to say it shows how an image appears BEFORE it is rotated.

This means that the table and the diagram are complete opposites of each other, and so each action in the table must be represented by its exact opposite in the diagram - and so they are!

So why are only 6 and 8 different? Because 2, 3, 4, 5, and 7 already ARE their own opposites - apply each one twice and you're back where you started. But 6 and 8, being 90 degree rotations, are not their own opposites but are instead EACH OTHERS opposites.

So if your "actual" image looks like F(8), then you need to apply an EXIF Orientation of 8 to display it like F(1).

But it is incorrect say that F(1) will look like F(8) after an EXIF Orientation of 8 has been applied to it.

The DIAGRAM is NOT a graphical representation of the TABLE, but it's not wrong either.

My head hurts now...

Many thanks for a fantastic site - I know my JPEGs are a world better because of it - Simon
 Perfect... Thank you very much for straightening out the ambiguity. I will look at fixing the images/table/text accordingly soon.
2011-01-04joh
 Great article! But figures 6 and 8 are incorrect and should be swapped, as mentioned in the comments. I've checked, and this is the way Eye of GNOME rotates the image.
 Thanks joh -- I will look into this again and update it if it looks like I've got it backwards :)
2011-01-03toto
 A question for you experts.

My old camera (Nikon Coolpix s6) has proper Exif Orientation support and my display program (Gnewview for linux) is perfectly showing rotated picture.

My new camera (Olympus Tough-3000) apparently is not supporting the orientation tag and I have to manually rotate pictures.

Now my question is: if I want to print out the pictures should I bring to the store the original ones or the rotated? In case of the old camera, it doesn't really matter because it was a virtual rotation while displaying, but with the new camera, it's a REAL rotation.

Any help is very much appreciated.
2010-10-23go4java
 Hi,
very clear and comprehensive summary of the EXIF "orientation" info.
Since I basically like the idea of getting all images AUTOMATICALLY rotated, I'm currently a bit upset about Sony's PS3: This box does NOT auto-rotate images according to their EXIF info; this applies to network streamed JPEG images, USB-connected images seem to work.
BR
2010-07-05Aldo
 Hi there,

Great post! I've been staring at the diagram above for the past hour and I'm pretty sure images 6 and 8 are labled incorrectly. Shouldn't image 6 actually be 8 and vise versa??

Thanks,
Aldo
 Good question... By "Row #0 is Right Side", it means that Row 0 in the encoded image is actually the right side of the captured scene. Similarly, Column #0 is the Top Side of the captured scene.
2010-05-22John
 Do you think the Kodak does it lossless?
2010-03-28gazzar
 @John, my Kodak camera definitely behaves differently to my Canon - I'm pretty sure the Kodak rotates it in the camera - I've never had to reprocess the image from my Kodak, but I have to run the Canon images through a lossless rotation program like this http://www.pilpi.net/software/JPEG-EXIF_autorotate.php
2010-03-21John
 Do you know if Kodak cameras actually rotate the image within camera.........
2009-12-31Cory
 Thanks for the info and nice graphic. It helped me to create an auto_rotate function in PHP. For anyone who is interested and knows PHP: http://www.mawhorter.net/web-development/simple-image-manipulation-in-php-rotate-resize-crop-flip-and-mirror-thumbnails-square-and-regular
 Thanks Cory
2009-11-29wim
 http://www.pilpi.net/software/JPEG-EXIF_autorotate.php

I just used this and it seemed to work fine. You don't feel like you're havng to install yet another program. Instead this only shows up when you need it.

grts
wim
 Thanks Wim
 
2009-11-27PJ
 Well, another example of thoughtless Microsoft programming - after all, don't use the picture and fax viewer, it is crap - and it does NOT rotate lossless, I checked specifically.
@Les: jhead does that among a number of other useful things such as correcting the EXIF time, etc.
2009-04-09Les
 Occasionally, my camera seems to be setting the EXIF orientation flag incorrectly, resulting in standard landscape shots displaying as portraits.

Can you suggest a program that will re-set the flag to 0 (or indeed any other value I may need to set it to) without touching any other data - in particular, without rotating the image data?

Thanks for a great series of articles.
Les
2009-02-28Kirsty
 Thanks for the article. I have a Canon camera with an orientation sensor and really wanted to view the photos correctly without messing with the image itself.

I've now downloaded IrfanView and am enjoying using that rather than Windows Photo Gallery.
 Glad to hear it!
2009-02-24Brian
 Yes I have followed the advice and this is the answer.
EXIF IFD0 @ Absolute x[00000014]
Dir Length = x[000C]
[Make ] = FUJIFILM
[Model ] = FinePix F470
[Orientation ] = 1
But photo uploads from camera to PC still does not "auto-rotate images"

http://www.dpreview.com/reviews/specs/FujiFilm/fuji_finepixf470.asp
JPEGsnoop tells me that the camera has Orientation - 1, but the above website says No Image Orientation.

Thanks
Brian
 If the camera is writing a "1" to the orientation flag, then one would generally assume that it has an orientation sensor. A value of "1" will indicate to software that there is no need to perform a rotation, so that explains what you are seeing. The real question is why the camera would set this orientation flag if it doesn't have a sensor...

I have confirmed that other images I've found on the web from this digicam set the Orientation flag to 1 irrespective of whether it was taken in landscape or portrait mode.
2009-02-24Brian
 Hi!
Digital Cameras with orientation sensors allow auto-rotation of portrait images.
Does my Fujifilm Finepix F470 have a built-in orientation sensor for auto rotation ? How can I find EXIF orientation flag? if it is in the camera Fujifilm Finepix F470 .
Thanks
Brian
 If you're using JPEGsnoop, have a look at the section starting with EXIF IFD0:
  EXIF IFD0 @ Absolute x[00000014]
    Dir Length = x[000B]
    [Make                                ] = FUJIFILM
    [Model                               ] = FinePix F700  
    [Orientation                         ] = 1
If the "Orientation" flag is shown, then generally the digicam has an orientation sensor built-in. In the above example (Fuji F700), we see that it does indeed have a sensor.
2008-11-12Jamie
 GQView on the linux side does honor the Orientation flag.

Note to Java programmers: Apache Sanselan can read exif data including this orientation flag when using that image library.

See: http://incubator.apache.org/sanselan/site/index.html

Eg.
IImageMetadata meta = Sanselan.getMetadata(image bytes[]);
if(meta instanceof JpegImageMetadata){
JpegImageMetadata metaJpg = (JpegImageMetadata) meta;
TiffField orientationField = metaJpg.findEXIFValue( TiffTagConstants.TIFF_TAG_ORIENTATION );
if(orientationField != null){
int orientation = orientationField.getIntValue();
if(orientation == 6){ //orientation right top
//rotate image 90 degrees here
}
}
}
 Thanks for the info, Jamie!
2008-10-30Chris Molloy
 Re: "The values 1-8 represent the following descriptions (as shown by utilities that support EXIF field decode) table" - there's a couple of typos in your table. As per http://www.exif.org/Exif2-2.PDF, the table should read:
1 = top, left
2 = top, right
3 = bottom, right
4 = bottom, left
5 = left, top
6 = right, top
7 = right, bottom
8 = left, bottom

The rotated 'F' diagram is correct, however.
 Great. Thanks for catching that (#2 & 4 have been corrected now).
2008-07-03Ramesh
 Posting is very useful and Thanks a ton :)

Just wanted to if there is any way to rotate a picture with out EXIF having a rotation info. Some intelligent algorithm which rotates automatically based on some common important objects like SKY, MOUNTAIN PEAKs..etc

Appreciate your help in this.
2008-06-09wjg
 should also mention that IE7 and Firefox do not support the orientation data either.
2008-02-21FyKnight
 I think your diagram is incorrect. 6 and 8 should be around the other way. The description is correct AFAICS. e.g. 8 says 'row 0 on the left side'. But in your diagram it is on the right side.
2008-01-22Davide Bolsi
 "Unless the camera were to encode the image right-to-left or know that you were taking a photo in a mirror, I don't see how these values will ever be used."

I agree, these values can be used for example with telescopes (or other optical devices) with a mirror diagonal on the optical path... but you will have to (be able to) properly set the camera in order to get the correct value.
In my opinion these values are aimed to different imaging devices like xray machines, slide scanners, etc
 Great point Davide!
2008-01-08Max
 Hi

Thanks a lot for the article, first !
Then i just would have like to know if the small soft given 2 posts below is a good solution in my case :

I'm usually using XnView to rotate my pictures.
However i recently got some taken by a Canon camera, meaning that the orientation exif flag is used. Thus XnView automatically rotates the pictures according to the flag, whereas Windows does not. But i would like to see the rotated pics in windows as well.
Thus i used the softawre advised (http://www.pilpi.net/software/JPEG-EXIF_autorotate.php) but i am not really certin of it to be the best solution :-)

Thanks for your advice !
 I have not used that particular tool myself, as I rely on DownloaderPro instead to do this function (plus the renaming and folder organization). I definitely think you can trust Downloader Pro as it has been widely used and well thought-out.
2007-08-31Tibor
 "While your digital camera may include an option to "auto-rotate images" due to the camera's orientation, this is ONLY used for the purposes of the LCD display on-camera."
My Kodak DX7440 does rotate the image, not only on its LCD display, but the file itself, the image is already rotated when I copy to PC.
 Definitely... I'm not sure why I wrote it as being only a LCD display function as that is not what I had intended to write -- the auto-rotate function is almost always just a "virtual rotation", not a real rotation of image content. Thanks for pointing it out -- I've clarified the sentence now.
2007-08-17RayZ
 Thanks for the article. I found that this small tool does the trick for the photos from my 300d. Cheers, Ray.

http://www.pilpi.net/software/JPEG-EXIF_autorotate.php
2007-03-06Ian
 Hi,

Thanks very much for the details in your very helpful article. I am developing some software that is to include auto-rotation based upon the EXIF information, but I want to try and get an idea of what proportion of cameras on the market have orientation sensors. Do you know of any lists anywhere? dpreview.com allows searching for cameras that have sensors but limits results to 10, and so it's hard to get an overall picture of what support there is.

Thanks for any help you can provide.
 At first I thought that I might be able to automatically process photos from ~ 200 digicams (using JPEGsnoop) and see which ones omitted the EXIF Orientation flag. However, it quickly became apparent that even digicams without orientation sensors often still set the orientation bit (to the default 1). There were some exceptions, such as the Nikon D1 series, Nikon D100, Pentax *ist D, Sony DSC-F717, which don't include any JPEG Orientation flag in the file.

Generally speaking, I'm not aware of the proportion of models that include orientation sensors (or a list that would be easy to extract this from), but it is clear that it is quite prevalent in recent models, even in the cheaper lines.
2006-12-22Mark Worthington
 Regarding cropping, interesting advice … my "easy way out" is to use an application that performs lossless cropping .. I use BetterJPEG (which I've seen you mention elsewhere). Would you say that your restrictions are met using that app?

Cheers,
Mark
 Absolutely. When cropping in this programs that were designed with lossless operations in mind (some parts of IrfanView, BetterJPEG, jpegtran, etc.), there is almost always a restriction that would prevent you from cropping across a partial MCU (thereby making the crop no longer lossless).
2006-12-22Mark Worthington
 I meant to ask, what do you mean by "on properly sized images". Presumably this would apply to any of the available images-formats on a Canon camera .... ?

Cheers,
Mark
 By properly-sized I am referring to an image whose dimensions are a multiple of 8 pixels in both directions. Thankfully, Canon has never produced a digicam with partial MCU image dimensions, unlike some other manufacturers. Note that if you crop the image, you should keep these restrictions in mind (and better to use multiples of 16 pixels in both directions, to account for potential chroma subsampling).
2006-12-20Mark Worthington
 Thanks for the info. At last, something I can trust!!
Mark
 No problem!
2006-12-19Mark Worthington
 I agree that the best time to perform this auto-rotation is during image import (e.g. from memory card). Given that you mention Canon by name, their software, ZoomBrowser Ex, does enable this during import. However, from what I can gather it would appear that this is NOT a lossless process, and so I import with no rotation and apply the auto-rotation later on. I wondered if you could add any light on the ZoomBrowser "lossless" or not rotate?

Whatever is the consensus view of this software, it does offer some things that are otherwise hard to find, like viewing MakerNote information..

Regards,

Mark
 I have now tested Canon ZoomBrowser EX 5.7 and confirmed that it does use lossless rotation (on properly sized images) when you set the Rotate Actual Images checkbox. Unfortunately, it seems that there is a lot of misinformation about this on the net. It would help if Canon would advertise this fact in their documentation somewhere.

 


Leave a comment or suggestion for this page:

(Never Shown - Optional)