Возникла необходимость перенести все фотографии альбомного формата из одной папки в другую, при этом, не копируя фотографии других форматов. В ручную, с многими тысячами фотографий сделать такое долго, начал искать путь автоматизации.
Гугл не дал ответ на данную задачу, поэтому пришлось писать решение самому.
У меня операционная система 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