Автор Тема: Как разделить фото на вертикальные-горизонтальные?  (Прочитано 9204 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн leopold7777

  • Новичок
  • **
  • Автор темы
  • Сообщений: 63
Нужен скрипт, который мог бы общую папку с сотнями гориз/вертик фотографий отгруппировать/разделить на 2 раздельные папки → одну - только с вертикальными фото.. другую - только с горизонтальными?    У меня стоит Ubuntu/Runtu 14.04.5 ×64.
 В Phatch я такой функции не нашёл.. в ImageMagick - тоже.   Кто подскажет!?   Буду ОЧЕНЬ БЛАГОДАРЕН!!!  А то я их замучился сортировать вручную (для последующей оптимизации размеров в Phatch'е.  Там, ведь, размеры масштабируются - отдельно вертикальные фото.. и, отдельно горизонтальные)
Удивительная  вещь  -  чем больше познаЮ, тем больше  узнаЮ,    что НИЧЕГО НЕ ЗНАЮ ТАК, КАК ДОЛЖО ЗНАТЬ.   ...Но.. многие.. и ЭТОГО   не знают!

Оффлайн RoDoN

  • Постоялец
  • ***
  • Сообщений: 242
Т.е. ответов там не достаточно?
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
Runtu 18.04->20.04->22.04 x64 XFCE

Оффлайн leopold7777

  • Новичок
  • **
  • Автор темы
  • Сообщений: 63
Т.е. ответов там не достаточно?

Да.. не достаточно.  Там же есть и мой вопрос (Ответ #7) на один из ответов от ALiEN175.  Но, ответа на него пока нет.    
« Последнее редактирование: Июнь 26, 2018, 08:20:36 от leopold7777 »
Удивительная  вещь  -  чем больше познаЮ, тем больше  узнаЮ,    что НИЧЕГО НЕ ЗНАЮ ТАК, КАК ДОЛЖО ЗНАТЬ.   ...Но.. многие.. и ЭТОГО   не знают!

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
попробуйте заключать в кавычки не весь путь, включая и $ , а только переменную "i". У меня, иногда, скрипты только так начинают работать
Devuan ASCII x32..x64

Оффлайн leopold7777

  • Новичок
  • **
  • Автор темы
  • Сообщений: 63
РЕШЕНО!  ..В личной переписке ALiEN175 (из "Форум русскоязычного сообщества Ubuntu") написал ЧУДЕСНЫЙ скрипт, который в данном вопросе РАБОТАЕТ ОТЛИЧНО и БЕСПЕРЕБОЙНО!!!
Даже, не надо нажимать "Enter" — вставил ЕГО в терминал и ОН сам пошёл работать.  СУПЕР!
#!/bin/bash
cd "$DIR"
  mkdir вертик
  mkdir гориз
    for f in ./*.JPG; do  
    ORI=`identify -format '%[EXIF:orientation]' $f`  
    if [[ $ORI == "1" ]]; then
      cp "$f" "гориз/${f%%JPG}jpg"
   else
      cp "$f" "вертик/${f%%JPG}jpg"
   fi
done
echo "all done, master"

Если, кому надо → РЕКОМЕНДУЮ!
 
« Последнее редактирование: Июнь 26, 2018, 08:12:55 от leopold7777 »
Удивительная  вещь  -  чем больше познаЮ, тем больше  узнаЮ,    что НИЧЕГО НЕ ЗНАЮ ТАК, КАК ДОЛЖО ЗНАТЬ.   ...Но.. многие.. и ЭТОГО   не знают!

Оффлайн leopold7777

  • Новичок
  • **
  • Автор темы
  • Сообщений: 63
попробуйте заключать в кавычки не весь путь, включая и $ , а только переменную "i". У меня, иногда, скрипты только так начинают работать

ek-nfn, спасибо! Буду иметь ввиду ЭТОТ совет для других возможных ситуаций со сбоями в работе скриптов.
..Моя тема, как Вы поняли, уже решена.....
« Последнее редактирование: Июнь 26, 2018, 08:09:20 от leopold7777 »
Удивительная  вещь  -  чем больше познаЮ, тем больше  узнаЮ,    что НИЧЕГО НЕ ЗНАЮ ТАК, КАК ДОЛЖО ЗНАТЬ.   ...Но.. многие.. и ЭТОГО   не знают!

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Даже, не надо нажимать "Enter" — вставил ЕГО в терминал и ОН сам пошёл работать.  СУПЕР!

ну это вы уже перебрали  ;D Случайно не рыбачите ?

Кстати, скрипт не работает. Ни с файлами *.jpg (в цикле ищет *.JPG для присвоения переменной f), ни после коррекции скрипта - все копирует в одну папку "вертик". Оно и понятно - скрипт использует информацию EXIF, а далеко не во всех файлах она присутствует. Обычно фотографы ее затирают.
При этом скрипт не переносит фото, а просто копирует, оставляя оригиналы на месте. А это уже не сортировка. Оно и не мудрено, так как в скрипте используется команда копирования вместо переноса.

И вопрос, какую роль играет команда cd "$DIR" ?
« Последнее редактирование: Июнь 26, 2018, 17:27:48 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
для последующей оптимизации размеров в Phatch'е.  Там, ведь, размеры масштабируются - отдельно вертикальные фото.. и, отдельно горизонтальные)

Насколько помню, Phatch может работать по длинной стороне независимо от ориентации фото. Также работает и другой gui пакетный обработчик - XnConvert, сортировка фото не нужна. У этих программ другие проблемы, связанные с определенными символами в названиях путей-файлов. Например, XnConvert не видит файлы с пробелами в названии, просто молча их игнорирует и пользователь даже не подозревает о наличии необработанных фото. У Phatch свои глюки, уже не помню какие.
« Последнее редактирование: Июнь 26, 2018, 17:30:53 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн leopold7777

  • Новичок
  • **
  • Автор темы
  • Сообщений: 63
 Даже, не надо нажимать "Enter" — вставил ЕГО в терминал и ОН сам пошёл работать.  СУПЕР!
Цитировать (выделенное)
ну это вы уже перебрали  ;D Случайно не рыбачите ?

Да, не.. я не "рыбак" :).  Конечно, глубиной познания "компо -скрипто -кухни" - меня с Вами и рядом не стояло.. это однозначно.  Просто, у меня ВСЁ, что НАДО МНЕ, работает.. я счастлив(!) и делюсь реальностью.
..Я не могу расписать рабочие процессы каждой команды, буквы или символа в скрипте, но.. скажу "по-колхозному" — команда echo "all done, master" "жмёт" за меня "Enter".  Если, её убрать — придётся тыкать пальчиком.
..Даже, МНЕ понятно, что.. если, будет задано  for f in ./*.JPG; do..  гориз/${f%%JPG}jpg и вертик/${f%%JPG}jpg, то с .jpg регистром "машинка работать НЕ БУДЕТ".   Обычно с фотика идёт JPG -регистр.. но, бывает попадаются другие фотки с jpg .. поэтому я в другом файлике с ЭТИМ же скриптом отрегистрил все ЭТИ три места с JPG на  jpg  и применяю эти 2 скриптика соответственно с регистром "JPG/jpg" на растусовываемых фотках.  И ВСЁ РАБОТАЕТ, сэрр → в ДВЕ папки!!!
 Про EXIF я не слышал, даже.. и понятия не имею, что ЭТО — наверное, поэтому ОНО мне и не попадалось :).  Я, ведь, простой обычный домашний муж-пенсионер, жена которого в путешествиях по миру (а, у нас они - не редки!) с фотиком не расстаётся.. +, к нам с Урала приезжают дети с внуками, другие гости.. фоткаются на Волге-речке, на Мамаевом кургане и т.пп... потом мне ВСЁ это оставляется на "переработку" — я их, с помощью Phatch'а (без ГЛЮКОВ!), ТЫСЯЧАМИ масштабирую с 1,5 -3,5 Мб в  80 -200 Кб каждую— иначе мне не хватало бы места на моих старых HDD-хранилищах :)      Phatch выдаёт корректные масштабы/размеры ТОЛЬКО РАССОРТИРОВАННЫМ фоткам по верт/гориз папкам, но не смешанному "винегрету" в одной папке.   Поэтому мне и нужен был чёткий верт/гориз скрипт -сортировщик.    
   ..."Копирует в папки, оставляя оригиналы на месте"?   Что ж поделать!?  Другого НЕТ.  И за ЭТОТ СПАСИБО ГРОМАДНОЕ → ALiEN175!!!  
Уж, лучше несколькими щелчками мышки потом удалить оригиналы, чем до одурения сортировать их ВРУЧНУЮ.   ..Кстати, Phatch тоже "за собой мусор не убирает" :)
  ...Если, можете ( и захочете! ), то подкорректируйте  наш скрипт командой ПЕРЕНОСА вместо КОПИРОВАНИЯ.    
Буду ОЧЧ БЛАГОДАРЕН.  Это же ПРАКТИЧНО и ИНТЕРЕСНО!

  ..С  XnConvert  не знаком.  Если, советуете - "познакомлюсь".   Но, мне жить-то осталось(!).. - только вникну, и помру))  Мне бы.. лучше.. в скрипты вникнуть, разобраться.. научиться их писать — это ИНТЕРЕСНО!
  ..Команда cd "$DIR" — действительно, "ни о чём".  Я очистил от неё скрипт и он РАБОТАЕТ.  Спасибо за вопрос -подсказку! :)
« Последнее редактирование: Июнь 27, 2018, 13:00:04 от leopold7777 »
Удивительная  вещь  -  чем больше познаЮ, тем больше  узнаЮ,    что НИЧЕГО НЕ ЗНАЮ ТАК, КАК ДОЛЖО ЗНАТЬ.   ...Но.. многие.. и ЭТОГО   не знают!

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Цитировать (выделенное)
но.. скажу "по-колхозному" — команда echo "all done, master" "жмёт" за меня "Enter".  Если, её убрать — придётся тыкать пальчиком.
По мне так над вами по доброму прикололись. Единственно что делает эта команда, то по завершению работы скрипта выводит в терминале вот это  ;D

К тому же, ее запускает сам скрипт, а не она запускает скрипт.

Бывает еще и .jpeg или .JPEG. Для универсального всеядного скрипта по хорошему надо втыкать регулярное выражение, предусматривающее все варианты расширений, а также и другие распространенные виды картинок - png, bmp и т.д.
Ну и отвязаться от EXIf, так как фотки бывают не только скачанные с фотика и у большинства из них информация exif  затерта. Можно же просто работать по 3-му  полю вывода identify без всяких опций и это будет работать универсально абсолютно по любым картинкам. Вывод - ширинаХвысота картинки. Вот пример работы по картинке .jpg и .png


Еще раз, разберитесь с Phatch, не надо для него сортировать фотки по папкам. Можно указать чтобы он работал по длинной стороне и все. И оригиналы он убирает за собой, точнее - он их переписывает пережатыми копиями. Вы просто поленились познакомиться с ним поближе. Говорю вам как бывший пользователь этого поделия, прогонявший через него только за раз по 1-5 тысяч фото.
Вам лучше написать скрипт для файлового менеджера, который разом пережмет все, что есть в выбранной папке. А не заниматься перегоном фоток из одной папки в другую, а затем еще возиться с настройками Phatch. Это же потеря времени при пережатии даже 100 фоток. А если пережимать 2000 ?
В ImageMagick все эти утилиты есть. Кстати, ваша identify тоже из этого пакета.
« Последнее редактирование: Июнь 27, 2018, 19:43:12 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Мне бы.. лучше.. в скрипты вникнуть, разобраться.. научиться их писать — это ИНТЕРЕСНО!

Вы начните и вам подскажут где делаете ошибки и варианты их решения. Суть то ведь не в том, чтобы снабдить вас готовой конструкцией, а чтобы вы ее сами создали, пусть и с подсказками )

...Если, можете ( и захочете! ), то подкорректируйте  наш скрипт командой ПЕРЕНОСА вместо КОПИРОВАНИЯ.    
Буду ОЧЧ БЛАГОДАРЕН.  Это же ПРАКТИЧНО и ИНТЕРЕСНО!
Ну так замените команду копирования - cp на команду переноса - mv. Вот и все решение этой проблемы. Получите небольшую практику по коррекции готового скрипта. Предварительно ознакомьтесь с командой переноса, так как она не только переносит, но и переименовывает. Можете столкнуться с сюрпризами  ;D
« Последнее редактирование: Июнь 27, 2018, 16:49:41 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн leopold7777

  • Новичок
  • **
  • Автор темы
  • Сообщений: 63
       Ой, СПАСИБО, Добрый Чел!  Приятно получить от Вас ответ! 
  Что первое, так это я поржал над собой, как я "объяснял" Сэнсэю, как работает команда  echo "all done, master"!  Ведь, действительно, в переводе с англ это.. типа, скрипт рапортует - "Всё сделано, Хозяин"))   Но, я от счастья полученного скрипта-растусовщика пропустил этот прикол мимо))
Дело в том, что ALiEN175 подогнал мне скрипт без ЭТОЙ команды.  Это я сам ЕЁ притулил к скрипту.. в свою очередь, подглядев и стырив ЕЁ с http://forum.ubuntu.ru/index.php?topic=66944.msg501388#msg501388 →  Ответ #6 ))). 
  Но.. ведь, РЕАЛЬНО — без ЭТОЙ команды скрипт запускается через "Enter".. а, с НЕЙ - стартует САМ СРАЗУ после ввода в терминал! ..Я прямо вот СЕЙЧАС взял и перепроверил - ТАК И ЕСТЬ!   Удивительно!!! :o  Но.. факт!

  .."Не отходя от кассы", заменил в скрипте cp на mv и.. ИСПУГАВШИСЬ.. вернулся обратно к cp.  Да, mv переносит, не оставляя копий оригинала (и переименовывавыя в jpg).. но, как-то эта ПУСТОТА на месте оригиналов непривычна, а потому и "страшновато" — а, ВДРУГ(!).. открываешь каку-нить из гориз/верт папок, а она/они.. ПУСТЫЕ!!! :o  И оригиналов НЕТ! :'(   ..Решающим моментом в моей ретировке на cp была Ваша фраза "Можете столкнуться с сюрпризами ;D" ←  :-[ :-\

Но, это всё мелочи по сравнению с тем, что.. общаясь с Вами, я.. хоть, и на микрон, но уже своими руками/мозгами проникаю в мир скриптов. Уже знаю функционал cp и mv и где они пишутся в скрипте..       А сколько(!) там ещё всяких слов, буковок, цифирек, скобок, символов, зависимостей и последовательностей  написания...     Мне это ИНТЕРЕСНО!  Хотелось бы к Вам "поближе" :)...   

 Есть несколько вопросов по тексту Ваших 2-х последних писем.  Но, это потом.. когда будет время и настроение. На данный момент - нет времени.   Да, и.. надоедать таким напором боязно и неэтично  :)                                                                                                       
Удивительная  вещь  -  чем больше познаЮ, тем больше  узнаЮ,    что НИЧЕГО НЕ ЗНАЮ ТАК, КАК ДОЛЖО ЗНАТЬ.   ...Но.. многие.. и ЭТОГО   не знают!

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Но.. ведь, РЕАЛЬНО — без ЭТОЙ команды скрипт запускается через "Enter".. а, с НЕЙ - стартует САМ СРАЗУ после ввода в терминал! ..Я прямо вот СЕЙЧАС взял и перепроверил - ТАК И ЕСТЬ!   Удивительно!!! :o  Но.. факт!
Я даже могу угадать, как это превращается в реальность - вы не набираете ручками команду в терминале, а тупо копируете ее из какого-то текстового файла и в этом вся хитрость. Вы просто вместе с командой копируете и невидимый символ перевода строки (то бишь ентер для терминала)  ;D Попробуйте ручками набрать в терминале строку команды и увидите, что ничего само не запускается.
я.. хоть, и на микрон, но уже своими руками/мозгами проникаю в мир скриптов. Уже знаю функционал cp и mv и где они пишутся в скрипте..       А сколько(!) там ещё всяких слов, буковок, цифирек, скобок, символов, зависимостей и последовательностей  написания...     Мне это ИНТЕРЕСНО!  Хотелось бы к Вам "поближе" :)...  
                                                
Вся мощь линукса открывается в процессе освоении конвейерной работы команд и в познании регулярных выражений. Тут уже нет границ для создания вариантов скриптов для обработки данных, ограничения будут только в мозгах и усвоенных знаниях.

Цитировать (выделенное)
но, как-то эта ПУСТОТА на месте оригиналов непривычна, а потому и "страшновато" — а, ВДРУГ(!).. открываешь каку-нить из гориз/верт папок, а она/они.. ПУСТЫЕ!!! Шокированный  И оригиналов НЕТ!
так не может быть. Если перенос по какой-то причине не состоялся, то оригиналы останутся на месте, а команда завершится с ошибкой, которую тоже можно в том же скрипте проанализировать и вывести соответствующее сообщение. Другое дело, если вдруг с пережатием перестарались и захотелось его уменьшить. То тут да, придется попрыгать с восстановлением удаленного. Хотя тоже решаемо.  
« Последнее редактирование: Июнь 28, 2018, 15:44:48 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Вот простейший рабочий цикл конвертации выделенных файлов для субменю файлового менеджера Thunar (внести в "особые действия" ФМ). При этом по барабану ориентация фото. Сжимает с качеством 85% по длинной стороне фотки (по высоте или ширине) до 1024 пикселя. При этом перезаписывает оригиналы фоток пережатой копией. Только надо помнить, что команда convert имеет ограничения по символам в именах файлов (сейчас уже не помню какие именно, то ли по пробелам, то ли по регистру символов).
Цитировать (выделенное)
for fname in %F; do convert -quality 85 -resize 1024x1024 "$fname" "$fname"; done; notify-send "Конвертация jpeg завершена"
Но правильней доработать его для работы не с выделенными файлами, а с выделенными в ФМ каталогами (то бишь цикл с перебором файлов вложен в цикл с перебором выделенных каталогов). Ну и учесть ограничения команды конвертации к именам файлов, что может потребовать поиск файлов с запрещенными символами и их переименованию перед подачей в конвертер.  
Если задача пережатия нескольких тысяч фото и в наличие есть многоядерный процессор, то гуглить использование xargs для распараллеливания задачи на все ядра. Что в разы сократит время выполнения задачи. Дерзайте.
« Последнее редактирование: Июнь 29, 2018, 21:07:31 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн leopold7777

  • Новичок
  • **
  • Автор темы
  • Сообщений: 63
Спасибо, ek-nfn!  ...Пока что, чтобы навести порядок в своих HDD-хранилищах, мне хватит скрипта-растусовщика и Phatch.  Ведь, во всё то, что Вы мне рекомендовали — надо ВНИКАТЬ и ДЕЛАТЬ.. и после ЭТОГО радоваться, что у тебя руки из плеч, а на плечах голова, а не вилок капусты.. и благодарить Бога за Linux и его создателя (Линуса Торвальдса) и продолжателей-разрабов.  И я ЭТО БУДУ ДЕЛАТЬ, потому что вижу в Linux'е платформу для безграничной деятельности ума и творчества.. и мне ЭТО НРАВИТСЯ!
 Но, это будет позже.. после лета, когда уедут внуки.. гости.. Потом, ещё и нам с женой надо ЧТО-ТО посетить (ещё не ВЕСЬ мир изведали, а жизнь уже идёт к закату((.   ..И тогда у меня к Вам будут вопросы))  Ведь, я в Вас разглядел Сэнсэя..и, думаю.. пытливому ученику Вы не откажете в ответах и наставлениях.   А, я за эти, иногда выпадающие, моменты короткого свободного времени, с Гуглом подучу элементарную компьютерную грамоту, чтобы.. хотя бы.. ДО КОНЦА понимать, о чём Вы говорите.  А, то.. вроде бы понятно.. но, в некоей абстракции.. обобщённо.. и недоступно для подетальной конкретики в движении к заданной цели.  ← ...Вот это я "подзагнул"! :)  Аж, самого улыбнуло))  Ну.. думаю.. Вы меня поняли, о ЧЁМ я.
« Последнее редактирование: Июнь 30, 2018, 13:52:43 от leopold7777 »
Удивительная  вещь  -  чем больше познаЮ, тем больше  узнаЮ,    что НИЧЕГО НЕ ЗНАЮ ТАК, КАК ДОЛЖО ЗНАТЬ.   ...Но.. многие.. и ЭТОГО   не знают!