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

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

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

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

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

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

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

По большому счёту, самым неизвестным для меня здесь является получение ориентации или разрешения фотографии.
Заранее спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.07.2019, 13:22
Ответы с готовыми решениями:

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

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

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

9
6967 / 2861 / 1100
Регистрация: 06.06.2017
Сообщений: 9,705
30.07.2019, 17:04
Лучший ответ Сообщение было отмечено 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  [ТС]
Спасибо!
Скрипт отрабатывает, но почему то нашёл всего один Portrait файл, хотя таких в корневой папке более 100.
В метаданных я никаких аномалий не обнаружил, на всякий случай прикладываю пример такой фотографии, которую скрипт отправил в "Horizontal". В просмотрщиках она у меня выглядит как Portrait.
Миниатюры
Перемещение фотографий в папки в зависимости от их (фото) ориентации (верт./гориз.)  
0
6967 / 2861 / 1100
Регистрация: 06.06.2017
Сообщений: 9,705
30.07.2019, 19:54
А кто сказал, что ориентация должна быть связана с метаданными? Ориентация не должна зависеть от Exif-Rotation.
Удалите exif и вы увидите реальную ориентацию в вашем вьювере без автоповорота.
0
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
30.07.2019, 19:55  [ТС]
В свойствах файла его ширина меньше высоты.
Что именно, в таком случае определяет ориентацию?
0
6967 / 2861 / 1100
Регистрация: 06.06.2017
Сообщений: 9,705
30.07.2019, 19:58
Как же меньше, если даже сейчас в браузере мы видим обратную картину?
0
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
30.07.2019, 22:56  [ТС]
Да, действительно, уделение метаданных несколько сбивает с толку просмотрщик и, как видим, html.
Получается, это косяк на стороне камеры/фотографа, не подскажете, что можно в таком случае предпринять при фотографировании?
0
6967 / 2861 / 1100
Регистрация: 06.06.2017
Сообщений: 9,705
31.07.2019, 01:01
Это не косяк камеры (если фотограф опционально не задал константу), это формирование датчиком тэга ориентации камеры относительно захваченной сцены. Подробнее.
Тэг не имеет отношения к реальным пропорциям изображения. Но всегда есть возможность повернуть/развернуть фото относительно тега. С помощью тех же jpegtran/exiftool/exiftran/nconvert/IrfanView/XNView/IM(convert/mogrify). Можно и на VBS+WIA, в принципе.
0
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
31.07.2019, 13:50  [ТС]
Попробовал применить автоповорот по 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
6967 / 2861 / 1100
Регистрация: 06.06.2017
Сообщений: 9,705
31.07.2019, 14:51
Все варианты не буду приводить. Вот некоторые:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2019, 14:51
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru