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

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

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

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

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

В папке 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
6626 / 2796 / 1078
Регистрация: 06.06.2017
Сообщений: 9,497
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
6626 / 2796 / 1078
Регистрация: 06.06.2017
Сообщений: 9,497
30.07.2019, 19:54 4
А кто сказал, что ориентация должна быть связана с метаданными? Ориентация не должна зависеть от Exif-Rotation.
Удалите exif и вы увидите реальную ориентацию в вашем вьювере без автоповорота.
0
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
30.07.2019, 19:55  [ТС] 5
В свойствах файла его ширина меньше высоты.
Что именно, в таком случае определяет ориентацию?
0
6626 / 2796 / 1078
Регистрация: 06.06.2017
Сообщений: 9,497
30.07.2019, 19:58 6
Как же меньше, если даже сейчас в браузере мы видим обратную картину?
0
0 / 0 / 0
Регистрация: 30.07.2019
Сообщений: 5
30.07.2019, 22:56  [ТС] 7
Да, действительно, уделение метаданных несколько сбивает с толку просмотрщик и, как видим, html.
Получается, это косяк на стороне камеры/фотографа, не подскажете, что можно в таком случае предпринять при фотографировании?
0
6626 / 2796 / 1078
Регистрация: 06.06.2017
Сообщений: 9,497
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
6626 / 2796 / 1078
Регистрация: 06.06.2017
Сообщений: 9,497
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2019, 14:51
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Исследование байт-кода Python: подключаем дизассемблер
stackOverflow 19.02.2025
Многие знают, что Python - интерпретируемый язык, но мало кто задумывается о том, что происходит между написанием кода и его выполнением. На самом деле Python использует промежуточное представление. . .
Исследование байт-кода Python: компиляторы против интерпретаторов
stackOverflow 19.02.2025
Понимание байт-кода Python - основополагающий аспект для разработчиков, стремящихся глубже понять внутренние механизмы языка и оптимизировать производительность своих программ. Байт-код представляет. . .
Comprehensions в Python - что это такое?
stackOverflow 19.02.2025
Когда речь заходит о Python, одной из его самых красивых и мощных возможностей являются списковые включения или comprehensions. Это особые синтаксические конструкции, позволяющие создавать новые. . .
Python правда такой медленный? Развенчиваем миф о медлительности
stackOverflow 19.02.2025
Когда речь заходит о выборе языка программирования для нового проекта, вопрос производительности часто становится одним из ключевых факторов. Python, несмотря на свою популярность и простоту. . .
Динамические формы в Flask
stackOverflow 19.02.2025
Работа с веб-формами часто требует гибкости в отношении количества полей, которые пользователь может заполнить. Представьте ситуацию, когда вам нужно создать форму для ввода контактных данных, где у. . .
Обнаружение объектов в реальном времени на Raspberry Pi с OpenCV и Movidius NCS
stackOverflow 19.02.2025
Технология обнаружения объектов в реальном времени становится все более востребованной в различных областях - от систем безопасности до автономных транспортных средств. Особый интерес представляет. . .
где chromium хранит пароли и как их обнулить в пожарном варианте
jigi33 19.02.2025
Where is the chromium browser stores passwords for a sites где chromium-подобный браузер хранит пароли и как их обнулить в пожарном варианте (see screenshot)
howto get access to external internet resources with kinit
jigi33 19.02.2025
Решение проблемы с необходимостью доп. авторизации по Керберос для автоотработки аутентификации на прокси-сервер (see screenshot)
Отслеживание автомобилей и определение скорости с OpenCV и Python на Raspberry Pi
stackOverflow 19.02.2025
В этой статье мы рассмотрим создание системы отслеживания транспортных средств и определения их скорости с использованием компьютерного зрения и библиотеки OpenCV. Наше решение основано на принципе. . .
ENV (environments) valid paths in linux
jigi33 19.02.2025
Environments paths (see screenshot)
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru