Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
1

Перемещение фотографий в папки в зависимости от их (фото) ориентации (верт./гориз.)

30.07.2019, 13:22. Показов 2089. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!

Подскажите пожалуйста варианты решения задачи:

В папке Photos содержатся множество фотографий, нужно разместить их все по вложенным папкам в зависимости от их ориентации (по фактическому разрешению или соотношению сторон): горизонтальные, вертикальные и квадратные в папки Horizontal, Vertical и Square соответственно.

Возможно ли обойтись без использования ImageMagic?

По большому счёту, самым неизвестным для меня здесь является получение ориентации или разрешения фотографии.
Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2019, 13:22
Ответы с готовыми решениями:

убрать верт/гориз скроллбары на форме?
при загрузке большого рисунка в timage на форме появляются автоматом верт и гориз скроллбары....

Фиксированная шапка GridView с верт. и гориз. прокруткой
Здравствуйте! Есть такая задача: зафиксировать шапку у GridView с возможностью...

Перемещение папки в папку, названную частью имени этой папки
Доброго времени суток, уважаемые форумчане! Перерыл кучу похожих тем, но конкретно своего случая...

Копирование исходных фотографий к готовым фото
Привет друзья. Раньше был программистом, потом заделался фотографом. С батниками дел почти не имел....

9
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
30.07.2019, 17:04 2
Лучший ответ Сообщение было отмечено Phlebotomized как решение

Решение

Цитата Сообщение от Phlebotomized Посмотреть сообщение
Возможно ли обойтись без использования ImageMagic?
По идее: exiftool -Directory<Orientation .
Но не совсем как запрошено. На VBS:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit: Dim oFSO, oImg, CurDir, F, SubDir
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oImg = CreateObject("WIA.ImageFile")
CurDir = oFSO.GetAbsolutePathName("")
For Each F In oFSO.GetFolder(CurDir).Files
   If F <> WSH.ScriptFullName Then
      On Error Resume Next
      oImg.LoadFile F
      If Err.Number = 0 Then
         On Error Goto 0
         Select Case True
            Case oImg.Width > oImg.Height SubDir = "Horizontal"
            Case oImg.Width < oImg.Height SubDir = "Vertical"
            Case Else SubDir = "Square"
         End Select
         If Not oFSO.FolderExists(SubDir) Then oFSO.CreateFolder SubDir
         F.Move CurDir & "\" & SubDir & "\"
     End If
   End If
Next
Set oFSO = Nothing
Set oImg = Nothing
MsgBox Space(20) & "Выполнено!", 4160, "Перенос изображений в папки ориентаций      "
Но правильно было бы называть Portrait/Landscape, а не Vertical/Horizontal.
1
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
30.07.2019, 19:45  [ТС] 3
Спасибо!
Скрипт отрабатывает, но почему то нашёл всего один Portrait файл, хотя таких в корневой папке более 100.
В метаданных я никаких аномалий не обнаружил, на всякий случай прикладываю пример такой фотографии, которую скрипт отправил в "Horizontal". В просмотрщиках она у меня выглядит как Portrait.
Миниатюры
Перемещение фотографий в папки в зависимости от их (фото) ориентации (верт./гориз.)  
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
30.07.2019, 19:54 4
А кто сказал, что ориентация должна быть связана с метаданными? Ориентация не должна зависеть от Exif-Rotation.
Удалите exif и вы увидите реальную ориентацию в вашем вьювере без автоповорота.
0
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
30.07.2019, 19:55  [ТС] 5
В свойствах файла его ширина меньше высоты.
Что именно, в таком случае определяет ориентацию?
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
30.07.2019, 19:58 6
Как же меньше, если даже сейчас в браузере мы видим обратную картину?
0
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
30.07.2019, 22:56  [ТС] 7
Да, действительно, уделение метаданных несколько сбивает с толку просмотрщик и, как видим, html.
Получается, это косяк на стороне камеры/фотографа, не подскажете, что можно в таком случае предпринять при фотографировании?
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
31.07.2019, 01:01 8
Это не косяк камеры (если фотограф опционально не задал константу), это формирование датчиком тэга ориентации камеры относительно захваченной сцены. Подробнее.
Тэг не имеет отношения к реальным пропорциям изображения. Но всегда есть возможность повернуть/развернуть фото относительно тега. С помощью тех же jpegtran/exiftool/exiftran/nconvert/IrfanView/XNView/IM(convert/mogrify). Можно и на VBS+WIA, в принципе.
0
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
31.07.2019, 13:50  [ТС] 9
Попробовал применить автоповорот по EXIF для 1000 файлов в FastStone Image Viewer, это работает, но очень медленно.
Похоже, IM здесь будет кстати.
Я нашёл вариант с convert, но он у меня в виде батника не отработал:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
 
JHEAD=jhead
SED=sed
CONVERT=convert
 
for f in *.jpg
do
        orientation=$($JHEAD -v $f | $SED -nr 's:.*Orientation = ([0-9]+).*::p')
 
        if [ -z $orientation ]
        then
                orientation=0
        fi
 
        if [ $orientation -gt 1 ]
        then
                echo Rotating $f...
                mv $f $f.bak
                $CONVERT -auto-orient $f.bak $f
        fi
done
Подскажите пожалуйста способ с предварительной авторотацией при помощи IM.
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
31.07.2019, 14:51 10
Все варианты не буду приводить. Вот некоторые:
mogrify -auto-orient *.jpg
nconvert -jpegtrans exif -overwrite -quiet *.jpg
i_view32.exe *.jpg /jpg_rotate=(6,0,0,0,0,0,0,0)
Могу, в принципе, к скрипту предварительный переворот прикрутить, но пока лень.
0
31.07.2019, 14:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2019, 14:51
Помогаю со студенческими работами здесь

Фото с текстом внутри фотографий при mouseover
Возник вопрос что это за скрипт такой и где искать или на что осмотреть что бы получить такое вот...

Вывод фотографий из папки (вернуть массив)
Домашнее задание. :) 0. Создайте в своем проекте папку, положите в нее несколько...

Получить и сохранить 100 фотографий с вебкамеры за раз, с интервалом фото в 1(или 2,3) секунды
Всех приветствую. С матлабом только знакомлюсь. Задача состоит в подключение веб-камеры и...

Как грамотно организовать загрузку фотографий пользователем для профиля, с сохранением путей к фото в базе данных?
Фото пользователей будут храниться в отдельной папке, а пути к ним в базе данных.Как ограничить...

Сбои и перемещение фото
Здравствуйте, есть к примеру папка e:\photo\ , в ней находится много папок с фото. Как сделать...

Удаление фото из папки и бд
Нужно при нажатии на кнопку удалить изображение из директории и бд. Следующий код выполняется после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru