Копирование всех фотографий альбомного формата из одной папки в другую (Linux, Imagemagick)

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

Гугл не дал ответ на данную задачу, поэтому пришлось писать решение самому.

У меня операционная система 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-файлам. Переносим только файлы альбомного размера.

Автор: Рудюк С.А.

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*