# Standard application to automatically rotate pictures based on EXIF

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.

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

From the windows shell,

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

jhead will not modify files that do not need rotation.

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".

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.

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. • This works great, but it is missing one important detail from the question: rotating the picture to the correct orientation based on EXIF metadata. – iglvzx May 15 '12 at 0:06 • 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. – jdh May 15 '12 at 3:36

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):

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

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:

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

• XNView is not free for commercial usage. – ceving Apr 1 at 12:34

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.

• As of 2018, this should be the selected answer. – mins Sep 2 '18 at 9:04
• @mins totally agree This should be selected answer – hsinghal Jan 5 at 5:08
• Windows 7 does not rotate correctly, because the EXIF flag for the orientation gets not removed. This may result in a 180° rotation. – ceving Apr 1 at 12:33

Used the following to rotate a jpg sourced from a csv file:

function batchRotateFromCSV([Parameter(Mandatory=$True)]$csvFile) {

$imageFormat = "System.Drawing.Imaging.ImageFormat" -as [type] Import-Csv$csvFile | Select PathToImage | ForEach {
$image = [System.Drawing.image]::FromFile($_.PortraitFile)
$image.RotateFlip([System.Drawing.RotateFlipType]::Rotate90FlipNone)$image.save($_.PathToImage,$imageFormat::jpeg)
}
}

You can of course change the file format of the image as well..

Note that PathToImage will be the name of the header in your CSV.

• Read the question properly before answring – traveh Jan 7 '17 at 7:49
• @traveh Can you look in the history to make sure the op didn't change the question since I answered this? – leeand00 Jan 9 '17 at 17:07
• 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. – traveh Jan 9 '17 at 17:11