Как я могу искать фотографии высотой или шириной?

Я хотел бы искать фотографии, которые имеют 4:3 соотношение сторон и затем копируют их во флеш-накопитель для использования в цифровом кадре. Я знаю, как сделать это в Windows с height:3000 (например), в графической оболочке. Как я могу сделать то же или в Наутилусе или с командной строкой?

4
задан 27 October 2015 в 05:07

2 ответа

можно использовать простой сценарий оболочки для этого. создайте любой файл search.sh в Вашем фото использовании папки

gedit search.sh

и вставка ревет строки:

#!/bin/bash

mkdir  /home/$USER/test
for i in *.jpg; do
read -r w h <<<$(identify -format "%w %h" "$i")
if [ `expr $h / $w` ==  `expr 4 / 3` ]; then
cp "$i" /home/$USER/test/
fi
done

сохраните этот файл с помощью Ctrl+s и сделайте его исполняемым использованием

sudo chmod +x search.sh

затем выполните его команда использования

./search.sh

это скопирует все фотографии, которые имеют 4:3 кому: test каталог в Вашем корневом каталоге. если Вы хотите копию к флеш-накопителю или где-то в другом месте затем вносите изменение в сценарии и если identify команда не доступна в Вашей системе затем, можно установить, использует команду:

sudo apt-get install imagemagick
2
ответ дан 1 December 2019 в 10:03

Извлечение изображений из рекурсивного каталога

Сценарий ниже скопирует изображения 4:3 отношение из исходного каталога рекурсивно в целевой каталог. Сценарий читает все общие форматы изображения, не - файлы изображений проигнорированы (повышение в IOError)

#!/usr/bin/env python3
import os
import shutil
from PIL import Image
import sys

dr = sys.argv[1]; target = sys.argv[2]

for root, dirs, files in os.walk(dr):
    for f in files:
        try:
            file = root+"/"+f
            img = Image.open(file); size = img.size; ratio = size[0]/size[1]
            if ratio == 4/3:
                shutil.copyfile(file, target+"/"+f)
        except (IOError, ValueError):
            pass

Как использовать

  • Скопируйте сценарий в пустой файл, сохраните его как search_ratio.py
  • Выполните его командой:

    python3 /path/to/search_ratio.py /source/directory /target/directory
    

Если один или несколько каталогов включают пробелы, используйте кавычки.
Команда в качестве примера я использовал для тестирования:

python3 '/home/jacob/Bureaublad/pscript_4.py' '/home/jacob/Bureaublad' '/home/jacob/Afbeeldingen/test'

В случае, если Вы извлекаете изображения из "плоского" (единственного) каталога

Затем сценарий может быть немного более простым:

#!/usr/bin/env python3
import os
import shutil
from PIL import Image
import sys

dr = sys.argv[1]; target = sys.argv[2]

for f in os.listdir(dr):
    try:
        file = dr+"/"+f
        img = Image.open(file); size = img.size; ratio = size[0]/size[1]
        if ratio == 4/3:
            shutil.copyfile(file, target+"/"+f)
    except (IOError, ValueError):
        pass

Используйте его точно как первый.

Обратите внимание, что с первым сценарием, Вы получите столкновения имени в случае дублированных имен в папках другого источника.

1
ответ дан 1 December 2019 в 10:03

Другие вопросы по тегам:

Похожие вопросы: