根据 EXIF 自动旋转图片的标准应用程序

根据 EXIF 自动旋转图片的标准应用程序

我几乎在每台 Windows 7 计算机上都安装了几个应用程序。这些应用程序包括:

  • Windows Live 图库(Windows Live Essentials)
  • Picasa
  • Windows 7 中随附的任何内容

哪个应用程序可以批量旋转一个文件夹中的所有图片根据 EXIF 信息

我知道有很多应用程序可以做到这一点,但是有任何标准应用程序可以做到这一点吗?有时我无法安装任何新东西,而且我在不同的地方使用几台不同的计算机。

让我重复一遍 - 我想根据 EXIF 信息转换图片,而不是全部图片。

答案1

jhead + jpegtrans

使用杰黑德(这需要jpg为了自动旋转特征)。

从 Windows Shell 中,

jhead.exe -autorot image.JPG

对于目录中的一批图片,使用 shell 通配符,例如

jhead.exe -autorot pics\*.JPG`

jhead不会修改不需要旋转的文件。


此外

确保jheadtran.exe在环境中PATH,例如PATH=%PATH%;C:\Path\to\jpegtran

我建议将-ft国旗改为“将文件修改时间设置为 Exif 时间“。

答案2

Windows 7 默认安装了 PowerShell,它可用于通过 WIA(Windows 图像采集)或 .Net 系统绘图对象编写图像编辑脚本。这是一个快速的 powershell 脚本,使用 .Net 方法将当前目录中找到的所有 jpg 顺时针旋转 90 度。

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

旋转限制为 90 度增量,包括图像翻转方向。

答案3

进入包含所有照片的目录。切换到“详细信息”视图。右键单击其中一列,然后单击“更多”。勾选适当的 EXIF 详细信息,然后单击“确定”。现在根据此 EXIF 详细信息过滤所有文件,最后选择所有照片,右键单击以顺时针或逆时针旋转。

答案4

使用以下内容旋转来自 csv 文件的 jpg:

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

当然可以更改文件格式图像也是如此。

请注意,这PathToImage将是您的 CSV 中标题的名称。

相关内容