Photos from most digital cameras already contain the information needed to rotate photos the right way up. This little app uses that information to automatically make sure your photos show up correctly everywhere. No need to do this by hand anymore.

Help, compatibility

Usage

Run the installer, follow the instructions.

When the installer is finished you should be able to
right-click any folder or a file with .jpg or .jpeg
extension. For folders, you should see the menu items
"Auto-rotate all JPEGs in folder" and "Auto-rotate all
JPEGs in folder and in all subfolders". For JPEG files, you
should see the menu item "Auto-rotate".

Clicking any of the menu items should bring up a console,
showing the progress of the auto-rotating process and
telling you to "Press any key to continue . . ." when
completed.

Setting timestamps of rotated files

As of version 1.2, during installation there
are two choices with the "Set the timestamp of selected
files to EXIF date" selection:

Not selected (default): jpegtran will change the
timestamp of all the rotated files to the current
date and time (of rotating).

Selected: the date of all the selected files, regardless of
whether they have been rotated or not will be changed to
the moment of taking the photo, according to the EXIF
metadata (jhead parameter -ft).

Compatibility

bless your dear, sweet little website for offering me the means
by which i may now autorotate with glee! thank you for saving me
fingers!
<3 <3 <3
^_^ -melissa :)

"Hi, i have tested your autorotate with Windows 7 64Bit, with
300
photos taken from Nikon D90. ALL SUCCESS. 64BIT works well. thanks" -congkai

Windows
Vista:
I just wanted you to know that I installed it on my new Vista machine, and
it works like a charm (full disclosure, I had actually already
rotated the files I tested it on, but I can't imagine any
Vista-specific difficulties that would occur only on an actual
rotation). -Magnus Torfason

Your program to rotate jpg by using EXIF Info works on XP
SP2 with Canon
EOS
350D Pictures.
Thanks a lot for this program. (Thanks to Dancorp)

i used
it with pictures taken with a canon g5, US windows xp with sp2 (thanks to
melissa)

it works perfectly with my panasonic lumix FX7 and winXP pro
sp2 (Thanks to godefroy jerphanion)

We have tested it successfully in WinXP SP2 (English)?with the
following cameras:?Nikon D70, Nikon D200, Nikon D2X. (Thanks VB)

works well (Canon ixus 400 / Win XP) (Thanks to Jerome BARON)

Canon 350d (Thanks to Matthew Bailey)

Just wanted to drop you a line concerning the autorotate software.
I seriously love it! You saved me a LOT of time!
(I have a canon IXUS 50, but I also used it on other peoples' pics) (Thanks to
Pepijn :)

It's work well with images token from Minolta D5D. (Thanks to Der-Johng
Sun)

Works great on my Canon Ixus 800 IS. (Thanks to Paul Papathomas)

It works great with a Lumix Panasonic FZ7. (Thanks to Raphael ALEMANY)

Possible troublemaker: Photos with no Orientation tag

Some
cameras do not store the orientation data at all, so JPEG-EXIF
autorotate can't work at all. You can check if your photos contain the
orientation data by entering a photo that should be portrait but has not
been rotated yet, at exifdata.com. On
the results page, scroll to the bottom of the list to find
"Orientation". If the Orientation value is "Horizontal (normal)", then
the file you uploaded does not contain portrait orientation data -
either because it never was in the file, or because it has been cleared,
for example after already having been rotated.

Possible
troublemaker: Write permissions

Another common problem is that
you don't have write permissions to the photos/JPEG files or to the
folder containing them, so JPEG Autorotate can not change the
files.

Some cameras do not store the orientation data at all, so JPEG-EXIF
autorotate can't work at all. You can check if your photos contain the orientation data by entering a photo that should be portrait but has not been rotated yet, at exifdata.com. On the results page, scroll to the bottom of the list to find "Orientation". If the Orientation value is "Horizontal (normal)", then the file you uploaded does not contain portrait orientation data - either because it never was in the file, or because it has been cleared, for example after already having been rotated.

Another common problem is that you don't
have write permissions to the photos/JPEG files or to the folder
containing them, so JPEG Autorotate can not change the files.

Features

Note: With the default settings, all
the rotated files will
have their timestamp changed to the time and date at the moment of the
operation. However, the datetime EXIF metadata inside the file will
be preserved. You also have an option during the installation to have the
app set the dates of all files to the EXIF datetime field's value. See
readme.txt (below) for more info.

What does it do?

According to the EXIF orientation metadata stored in JPEG
files by digital cameras, JPEG Autorotate losslessly
rotates the files which are oriented wrong, usually by 90
or 270 degrees.

"I own a canon ixus digital camera, which has the ability
to save the orientation the camera was in while taking the
picture in tag in the exif headers of the pictures, thanks
to a gravity sensor. Exif-enabled software can read this
tag and display the images the right side up, but these
programs are still uncommon (well, photoshop does, but the
standard windows image viewer doesn't. The solution I
prefer is to rotate the images in the correct direction
once and for all, and then I can forget about using exif
enabled software" -Thomas Bonfort, the original writer of
the batch files

The graphical user interface of the application is the
right-click menu items in Windows. (Clicking any one of
them will launch jhead with the appropriate command line
parameters in a console window.) See "Acknowledgements"
below for further details.

Acknowledgements

Some might consider the optimal solution to not touch the
file timestamps at all. Unfortunately with jhead this is
currently not possible.

As of version 1.2, IPTC metadata will be left intact.
Earlier versions deleted all IPTC metadata due to a problem
in jhead.

From the jhead documentation: "After rotation, the
orientation tag of the Exif header is set to '1' (normal
orientation). The exif thumbnail is also rotated as of
Jhead version 2.5. Other fields of the Exif header,
including dimensions are untouched, but the JPEG
height/width are adjusted. This feature is especially
useful with newer digital cameras, which set the
orientation field in the Exif header automatically using a
built in orientation sensor in the camera."

In some cases, the context menu entries will not be
directly under the right click menu, but in the submenu
"Open with..." If you know how to force it directly in the
context menu, please tell me. http://pilpi.net/contact/

From the jpegtran documentation: "The transpose
transformation has no restrictions regarding image
dimensions. The other transformations operate rather oddly
if the image dimensions are not a multiple of the iMCU size
(usually 8 or 16 pixels), because they can only transform
complete blocks of DCT coefficient data in the desired
way." ... "For practical use, you may prefer to discard
any untransformable edge pixels rather than having a
strange-looking strip along the right and/or bottom edges
of a transformed image. To do this, add the -trim switch:
-trim Drop non-transformable edge blocks."

The transformation is truly lossless - jhead is not using
the -trim command line argument when calling jpegtran to do
the actual rotating. With JPEG files coming straight out of
a digital camera, I understand that the dimensions of the
image dimensions usually are a multiple of the iMCU size,
so no strange results should appear. Be careful when
rotating "custom-sized" JPEGs though.

If you want to remove some menu items you already have
installed, you need to uninstall the entire JPEG-EXIF
autorotate via Control Panel -> Add/Remove Programs and
then reinstall it with only the desired menu options
selected.

Developer Notes

With version 1.2, the installer UI is getting a bit
crowded. I couldn't be bothered to learn the relatively
obscure NSIS scripting language well enough to create new
option pages to move some of the options to. If you know
how to achieve this or how to make the installer window
bigger/resizable, please let me know :).

The compiling the installer with NSIS requires the
InetLoad plugin, see credits.

The 1.2 installer also uses some files, which will not be
placed "as is" to the final installation directory
when using the installer: autooperateft.bat,
autooperatedirft.bat and autooperatedirrecursiveft.bat
These can be acquired by installing the scripts with
"Set the timestamp of selected files to EXIF date"
selected, and then renaming the three batch files to
the above names. Of course you will also need the default
versions autooperate.bat, autooperatedir.bat
and autooperatedir_recursive.bat, which will be
installed if you leave the above option unselected.
The only difference with these two sets of files is that
the _ft versions have the -ft command line parameter
passed to jhead, in order to set the file dates
according to EXIF metadata.

Includes jhead and jpegtran compiled for Windows. See the
installation directory, for default a folder called
"JPEG-EXIF_autorotate" in the "Program Files" (or
equivalent in local language).

Todo

A feature to close the rotating window automatically when
finished rotating has been requested a couple of times.

By "popular demand", now allow users to select not to wait for user
confirmation before closing window when completed rotating

Added new right click menu registry associations to make sure right click menu items appear on all computers

Version 1.2/2007-07-28 (Using NSIS 2.29)

Added an option to set the file dates to the date in
EXIF date field, which is supposed to be the photo taking
time/date.

Updated to a jhead post-2.7 head revision copy, to
avoid resetting the IPTC data of rotated files. Thanks to
Matthias Wandel, the author of jhead, for compiling it for
me on 2007-07-25.

Updated the documentation (this file), added Developer
Notes.

Tested the installer with wine on Ubuntu Linux. It
works. Not that it would be any use ;).

Made app version number visible in
the installer title bar.

Version 1.1/2006-05-06

Updated jhead to version 2.6, which means that now
JPEG-EXIF autorotate also rotates the thumbnails inside
JPEG images

Added a "regenerate thumbnails" feature, to fix the
thumbnails of images rotated by previous versions of
jhead or JPEG-EXIF autorotate. This feature uses
mogrify.exe from Imagemagick. mogrify.exe is over 4
megabytes, so the installer now downloads it only if
the user selects it for installation.

Added the URL of the JPEG-EXIF autorotate website in
the beginning and in the end of the rotating process.

Version 1.03/2006-01-05

Updated the package with the new documentation

Added a note in the beginning and in the end of the
rotating process

Version 1.02/2004-05-21
(just documentation - not yet updated in the installation
file)

Added 'acknowledgements' section
-- noting that jpegtran changes timestamps
-- describing the true lossless rotation that JPEG-EXIF
autorotate does
-- and noting that the orientation EXIF tag is set to '1'
(normal orientation) after rotation.

Version 1.01/2004-04-24

Cleaned up the NSI file, fixed the name of the
application to "JPEG-EXIF autorotate", fixed some minor
bugs, fixed errors in readme.txt

Version 2004-04-22

First release, 1.0

Credits

JPEG Autorotate is distributed as Public Domain
(for the .nsi script and the batch files)
Use it, edit it, distribute it if you wish, but please
keep the credits below and contact me (see
feedback above) if you do (any of these things =), so
that I can keep track of any developments.

This software includes a jhead executable. jhead
is made by Matthias Wandel and is distributed
under a PD license.

This software includes a jpegtran executable, thus,
this software is based in part on the work of
the Independent JPEG Group.

If during the installation you chose to install the
regenerate thumbnails feature, you also have
mogrify.exe, which is a part of ImageMagick.
http://www.imagemagick.org/
ImageMagick is Copyright 1999-2006 ImageMagick
Studio LLC, a non-profit organization dedicated to
making software imaging solutions freely available.
See imagemagick_license.txt for the license of
Imagemagick.

Credits

Thanks to
Raquel
for writing the first paragraph of the JPEG Autorotate website (as of July 2011) to make the app's purpose a bit more clear to everybody.

This readme.txt, the installer script for NSIS (also
included in the installer package) and major
modifications to Thomas' batch files by Olli
Savolainen, http://www.pilpi.net/

Background

I used to have
a Konica Minolta DiMAGE Z2 camera, which lets me rotate
photos, but actually it doesn't really rotate them. It
just edits the EXIF orientation metadata in the JPEG file.

I found a solution by Thomas Bonfort that turned the EXIF data into a rotated photo, enhanced it to work in most
Windows machines and made a Windows
installer with NSIS. Uses jpegtran,
jhead and ImageMagick. Some parts compressed with 7-Zip as SFX.