6

Есть несколько приложений, которые я установил почти на каждом компьютере с Windows 7. Это такие приложения, как:

  • Галерея Windows Live (Windows Live Essentials)
  • Picasa
  • все, что выходит из коробки с Windows 7

Какое из этих приложений может вращать в пакетном режиме все изображения в одной папке на основе информации EXIF?

Я знаю, что есть много приложений, которые могут делать именно это, но делает ли это любое из стандартных приложений? Иногда я не могу установить ничего нового, и я использую несколько разных компьютеров в разных местах.

Позвольте мне повторить - я хочу поворачивать изображения на основе информации EXIF, а не ВСЕХ из них.

5 ответов5

8

В Windows 7 по умолчанию установлен PowerShell, который можно использовать для редактирования сценариев через WIA (Windows Image Aquisition) или системный чертежный объект .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, используя только стандартные приложения, которые поставляются с Windows. Однако я подумал, что в интересах других, у которых могут быть менее строгие требования, я упомянул 2 других способа.

Я бы порекомендовал XNView: http://www.xnview.com/en/xnview/ (не XNViewMP) для поворота без потерь в формате JPEG (если вы в порядке с возможной потерей нескольких пикселей по краям, поскольку это присущее ограничение без потерь в формате JPEG операции): XNView

Если вы не согласны с потерей каких-либо пикселей по краям и / или хотите сохранить результаты в другом формате, или хотите выполнять дополнительные манипуляции интуитивно понятным способом (пакетная обработка XNView довольно трудна для использования IMHO), я рекомендую Пакетную обработку Image Resizer, который является платным приложением: http://www.binarymark.com/products/batchimageresizer/default.aspx Пакетный Image Resizer

РЕДАКТИРОВАТЬ: новая версия Batch Image Resizer поддерживает автоматический поворот изображения на основе распознавания лиц. Он может обнаружить человеческие лица на ваших фотографиях и автоматически поворачивать изображения соответственно. Это может быть полезно, например, если отсутствуют теги ориентации EXIF и у вас есть 100 изображений, которые нужно повернуть:

Авто-вращение на основе лица

Отказ от ответственности: я использую обе программы ежедневно: XNView для просмотра / организации изображений, Batch Image Resizer для массовой обработки изображений.

2

jhead + jpegtrans

Используйте jhead (который требует jpegtran для функции автоматического вращения).

Из оболочки Windows,

jhead.exe -autorot image.JPG

Для набора картинок в каталоге, используйте «оболочку», например

jhead.exe -autorot pics\*.JPG`

jhead не будет изменять файлы, которые не нуждаются в ротации.


Дополнительно

Убедитесь, что jheadtran.exe находится в среде PATH , например, PATH=%PATH%;C:\Path\to\jpegtran .

Я предлагаю флаг -ft « Установить время модификации файла в Exif time ».

2

Перейдите в каталог, где находятся все ваши фотографии. Перейдите в подробный вид. Щелкните правой кнопкой мыши по одному столбцу и нажмите «Подробнее». Отметьте соответствующую деталь EXIF и ОК. Теперь отфильтруйте все файлы на основе этой детали EXIF и, наконец, выберите все фотографии, щелкнув правой кнопкой мыши по часовой стрелке или против часовой стрелки.

-1

Для поворота jpg-файла из csv-файла использовалось следующее:

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .