如何按高度或宽度搜索照片?
我想搜索具有4:3宽高比的照片,然后将它们复制到闪存驱动器以用于数码相框。 我知道如何在Windows中使用height:3000
(例如)在图形shell中执行此操作。 如何在Nautilus或命令行中执行相同的操作?
你可以使用简单的shell脚本。 使用创建照片文件夹中的任何文件search.sh
gedit search.sh
并粘贴波纹管线:
#!/bin/bash mkdir /home/$USER/test for i in *.jpg; do read -rwh <<<$(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
中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
完全像第一个一样使用它。
请注意,对于第一个脚本,如果不同源文件夹中存在重复名称,您将获得名称冲突。