Standard application to automatically rotate pictures based on EXIF

13,503

Solution 1

jhead + jpegtrans

Use jhead (which requires jpegtran for the auto-rotation feature).

From the windows shell,

jhead.exe -autorot image.JPG

For a batch of pictures in a directory, use shell globbing, e.g.

jhead.exe -autorot pics\*.JPG`

jhead will not modify files that do not need rotation.


Additionally

Make sure jheadtran.exe is in the environment PATH, e.g. PATH=%PATH%;C:\Path\to\jpegtran.

I suggest the -ft flag to "Set file modification time to Exif time".

Solution 2

Windows 7 has PowerShell installed by default, which can be used to script image editing thru either WIA (Windows Image Aquisition) or the .Net system drawing object. Here's a quick powershell script using the .Net method to rotate all the jpg's found in the current directory by 90 degrees clockwise.

[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
dir *.jpg |
ForEach-Object {
  $image = [System.Drawing.image]::FromFile( $_ )
  $image.rotateflip("Rotate90FlipNone")
  $image.save($_)
}

Rotation is limited by 90 degree increments, including image flipping orientation.

Solution 3

Go to directory where is all your photos. Change to Details View. Right click on one column and Click More. Tick appropriate EXIF detail and OK. Now filter all files based on this EXIF detail and finally select all photos, right mouse to rotate either clockwise or counterclockwise.

Solution 4

I am pretty certain there is no way to rotate images based on EXIF info using only standard apps that come with Windows. However I thought that for the benefit of others who might have less stringent requirements, I mention 2 other ways.

I would recommend XNView: http://www.xnview.com/en/xnview/ (not XNViewMP) for JPEG lossless rotation (if you are ok with possibly losing a few pixels off the edges, as it is inherent limit of lossless jpeg operations): XNView

If you are not ok with losing any pixels on the edges, and/or want to save results in a different format, or want to perform additional manipulations in an intuitive way (XNView's batch processing is somewhat hard to use IMHO), I recommend Batch Image Resizer, which is a paid app: http://www.binarymark.com/products/batchimageresizer/default.aspx Batch Image Resizer

EDIT: The new version of Batch Image Resizer support automatic image rotation based on face recognition. It can detect human faces in your photos and automatically rotate images accordingly. It can be useful when EXIF orientation tags are missing for example and you have 100s of images you need to rotate:

Face-based auto-rotation

Disclaimer: I use both programs daily: XNView for viewing/organizing images, Batch Image Resizer for bulk image processing.

Share:
13,503

Related videos on Youtube

Tschareck
Author by

Tschareck

Updated on September 18, 2022

Comments

  • Tschareck
    Tschareck almost 2 years

    There are few applications, that I have installed on almost every Windows 7 computer. This are applications such as:

    • Windows Live Gallery (Windows Live Essentials)
    • Picasa
    • anything, that comes out of the box with Windows 7

    Which of those applications is able to rotate, in batch, all of the pictures in one folder based on EXIF information?

    I know there are lots of applications, that can do exactly this, but does any of standard applications do that? Sometimes I cannot install anything new, and I'm using several different computers in different places.

    Let me repeat - I want to turn pictures based on EXIF info, not ALL of them.

  • iglvzx
    iglvzx about 12 years
    This works great, but it is missing one important detail from the question: rotating the picture to the correct orientation based on EXIF metadata.
  • jdh
    jdh about 12 years
    If the rotation operation is based on the requirement that the camera has the Orientation sensor available, and that all images have the EXIF orientation field set, then you can use the WIA library to check that attribute. Here's how to check if it exists and its value: if ($imageWIA.Properties.Exists("274")) { $imageWIA.Properties.Item("274").Value } Where the values are: $orientation = @{ 1 = "Horizontal"; 3 = "Rotate 180 degrees"; 6 = "Rotate 90 degrees clockwise" ; 8 = "Rotate 270 degrees clockwise" } Also need to load WIA reference and image into WIA.
  • traveh
    traveh over 7 years
    Read the question properly before answring
  • leeand00
    leeand00 over 7 years
    @traveh Can you look in the history to make sure the op didn't change the question since I answered this?
  • traveh
    traveh over 7 years
    Yeah, I actually did. He didn't. He did emphasize and repeat it it for people who don't bother to read the question properly, but he didn't change anything.
  • juju
    juju almost 6 years
    As of 2018, this should be the selected answer.
  • hsinghal
    hsinghal over 5 years
    @mins totally agree This should be selected answer
  • ceving
    ceving about 5 years
    Windows 7 does not rotate correctly, because the EXIF flag for the orientation gets not removed. This may result in a 180° rotation.
  • ceving
    ceving about 5 years
    XNView is not free for commercial usage.
  • Alexander Taubenkorb
    Alexander Taubenkorb about 4 years
    They are also on chocolatey, so you could install head and jpegtran with choco install -y jpegtran jhead and then just go to your directory and execute jhead.exe -autorot *.jpg
  • savolai ᯓ
    savolai ᯓ over 2 years
    jpegrotate.com / JPEG Autorotate can provide a cleaner interface and rotate based on EXIF data automatically. Disclaimer: I'm the author.