如何按高度或宽度搜索照片?

我想搜索具有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比例的图像,从源目录递归到目标目录。 该脚本读取所有常见的图像格式,忽略非图像文件(在IOErrorIOError

 #!/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 

完全像第一个一样使用它。

请注意,对于第一个脚本,如果不同源文件夹中存在重复名称,您将获得名称冲突。