如何根据分辨率将图像分类到文件夹中?


9

背景:我有一个充满已保存桌面图片的文件夹。我想根据它们的分辨率-1024x768等将它们放到文件夹中。动态创建文件夹是一个额外的好处。当前,图像都在一个文件夹中,但是其中一些在子文件夹中。如果可以简化操作,我可以手动合并它们。

我更喜欢终端机,尽管我还是个新手。真的,我根本不是一个程序员。

我正在使用Mac OS X,但我不反对安装额外的应用程序来完成此任务(MacPorts?),甚至不反对使用另一个操作系统(我现在在VMWare中安装了Windows XP,Windows Vista和Ubuntu 9) )。

任何帮助,将不胜感激!谢谢!

Answers:


11

我知道这是一个一年多的主题(对此感到抱歉),但是我认为有人可能需要完整的工作脚本,所以就在这里。在这里收集想法并编译成脚本。

#!/bin/bash

for image in *.jpg;
    do res=$(identify -format %wx%h\\n $image);
    mkdir -p $res;
    mv $image $res;
done

4

真的,谢谢大家的回覆!我已经回到了这一点,更加有经验,现在这里的大多数评论都变得更有意义。

我稍微调整了@zatatlan的脚本,以容纳文件名中的空格并添加更多文件扩展名。

#!/bin/bash

shopt -s nullglob # The script spits errors if this is not set and there are, say, no *.png files.
for image in *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.bmp *.BMP *.png *.PNG;
    do res=$(identify -format %wx%h\\n "$image");
    mkdir -p $res;
    mv "$image" $res;
done

3

可以使用imagemagick检测图像分辨率。将其包装成bash循环,然后就可以开始了。我不会等到回到bash shell回家,所以这里有些烦恼。语法可能是错误的,但可能会给您一些提示。

for image in $(`*.jpg`) do
   res=`identify $image | grep -o 'Resolution:'`
   if [ ! -d $res ]; then
     mkdir $res
   fi

   mv $image $res
done

该脚本可动态创建目录。bash和imagemagick都可用于Mac。


您可以通过将代码if块替换为simple 来使脚本更短,更简单mkdir -p $res
瑞安·汤普森

2

Amok EXIF分拣机

AmoK Exif Sorter可以重命名图片,并将其移动或复制到任意文件夹。
可以根据exif数据命名文件夹。

提供文件名的实时预览,集成的图片和exif数据查看器,拖放,缩略图视图,自动更新检查以及针对不同相机和用户的配置文件。

还支持按创建日期的视频文件,IPTC格式的文件。

JAVA编写,可在所有支持的平台上使用JRE5
在链接上签出功能列表。

不要灰心德语。
下拉Sprache并选择Englisch,重新启动应用程序。


1

ImageMagick的识别命令可以给你的宽度和像素高度,例如

~$ identify -format %w_%h\\n *jpg 
2868_3429
1056_960

您可以将其作为for循环的一部分放入bash脚本中,为了安全起见,请将文件复制到与分辨率相同的目录中(检查是否存在,如果不存在则创建)。


0

给出大致解决方案的一种基本方法是按文件大小进行组织。这是任何操作系统都应该内置的东西,因此您不需要任何特殊的东西。大的问题是,照片​​的格式必须相同才能起作用。这不是一个完美的解决方案,但是在您找到符合要求的东西之前,这可能是一个轻松的捷径。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.