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