Как отсортировать изображения в папки по разрешению?


9

Фон: у меня есть папка, полная сохраненных картинок рабочего стола. Я хотел бы поместить их в папки, основываясь на их разрешении - 1024x768 и т. Д. Создание папок на лету является бонусом. В настоящее время все изображения находятся в папке, но некоторые из них находятся в подпапках. Я могу объединить их вручную, если это облегчит задачу.

Я бы предпочел терминал, хотя я все еще новичок в Bash. Я совсем не программист, правда.

Я использую Mac OS X, но я не против установки дополнительных приложений для этого (MacPorts?) Или даже использования другой ОС (у меня есть Windows XP, Windows Vista и Ubuntu 9 прямо сейчас в VMWare) ).

Любая помощь будет оценена! Спасибо!

Ответы:


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 и все готово. Я не буду ждать, пока не доберусь домой до раковины, так что вот что-то с моей головы. Синтаксис, вероятно, неправильный, но он может дать вам некоторые подсказки.

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блок на простой mkdir -p $res.
Райан К. Томпсон

2

Есть Amok EXIF ​​Сортировщик

AmoK Exif Sorter может переименовывать изображения, а также перемещать или копировать их в произвольные папки.
Папки могут быть названы в соответствии с данными exif.

Предлагает предварительный просмотр имен файлов, встроенный просмотр изображений и exif-данных, перетаскивание, просмотр миниатюр, автоматическую проверку обновлений и профилей для разных камер и пользователей.

Также поддерживает видео файлы по дате создания, файлы в формате IPTC.

Написан на JAVA , работает на всех платформах, поддерживающих JRE5.
Оформить список функций по ссылке.

Не расстраивайтесь из-за немецкого языка.
Потяните вниз Spracheи выберите Englisch, перезапустите приложение.


1

Команда ImageMagick Identify может дать вам ширину и высоту в пикселях, например

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

Вы можете поместить это в скрипт bash как часть цикла for и, для безопасности, скопировать файлы в каталог, имя которого совпадает с разрешением (проверьте, существует ли он, и создайте, если нет).


0

Основной способ, который даст приблизительный порядок разрешения, заключается в организации по размеру файла. Это то, что должно быть встроено в любую ОС, поэтому вам не нужно ничего особенного. Большая загвоздка в том, что формат ваших фотографий должен быть одинаковым, чтобы это работало. Это не идеальное решение, но это может быть простой пробел, пока вы не найдете то, что действительно отвечает всем требованиям.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.