8

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.

Tschareck
  • 978
  • 4
  • 12
  • 23

5 Answers5

10

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.

jdh
  • 7,140
4

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

4

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.

user881208
  • 41
  • 1
3

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.

George
  • 310
-1

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

function batchRotateFromCSV([Parameter(Mandatory=$True)] $csvFile) {
    [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

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

leeand00
  • 23,552