Возникла необходимость перенести все фотографии альбомного формата из одной папки в другую, при этом, не копируя фотографии других форматов. В ручную, с многими тысячами фотографий сделать такое долго, начал искать путь автоматизации.
Гугл не дал ответ на данную задачу, поэтому пришлось писать решение самому.
У меня операционная система Linux Mint. Поэтому, сделал решение с помощью командного интерпретатора Bash с использованием библиотеки Imagemagick. Такое решение работает в Linux, но, как я писал ранее, можно сделать и в Windows, перенеся команды Linux в Windows вместе с библиотекой Imagemagick.
Получившийся скрипт:
# Перемещает фотографии с альбомной ориентацией #!/bin/bash export src="/photo/photo_2020" export dest="/photo/album_2020" echo "src=$src" echo "dest=$dest" for file in `find "$src" -type f -name "*.jpg"` do width=$(identify -ping -format "%w" "$file") height=$(identify -ping -format "%h" "$file") orient=$(identify -format '%[EXIF:Orientation]' "$file") echo "file=$file"; # Orientation: # Undefined - 0 # Undefined - [When no metadata] # TopLeft - 1 # TopRight - 2 # BottomRight - 3 # BottomLeft - 4 # LeftTop - 5 # RightTop - 6 # RightBottom - 7 # LeftBottom - 8 if (((orient==1))&&((width > height)))||(((orient==6))&&((height > width))) ; then echo "Yes! h=$height; w=$width"; echo "Orient=$orient"; mv $file $dest else echo "NO. $height; w=$width"; echo "Orient=$orient"; fi done
Src – каталог, откуда копируем.
Dest – каталог, куда копируем.
Пробегаемся по всем jpg-файлам. Переносим только файлы альбомного размера.
Автор: Рудюк С.А.
Leave a Reply