LINUX.ORG.RU

ImageMagick. Пакетная обработка изображений


2

0

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

find . -iname «*jpg» -print0 | xargs -0 -I{} convert <опции> {} /another/dir/{}

вроде того :)

Eddy_Em ☆☆☆☆☆
()
mogrify -чтотосделать *.jpg

Но если количество файлов измеряется сотнями, то лучше как сказали выше, а то максимальной длинны команды шелла может не хватить на раскрытие «*.jpg».

Deleted
()

из каталога с файлами:

mkdir <cat_name>; for f in *.jpg ; do convert -resize <размер> "$f" "<cat_name>/${f%.jpg}.jpg" ; done
профит :D пример:
sanja@amigo:~/documents/f-16/img$ ls -Rl
.:
итого 6116
-rw-r--r-- 1 sanja sanja  42525 2009-09-06 22:34 080109-F-8362B-327.jpg
-rw-r--r-- 1 sanja sanja  44101 2009-09-06 22:34 080320-F-6244S-066.jpg
-rw-r--r-- 1 sanja sanja  39989 2009-09-06 22:34 090123-F-8308W-054.jpg
-rw-r--r-- 1 sanja sanja 136678 2009-09-05 21:48 1296910.jpg
-rw-r--r-- 1 sanja sanja 166859 2009-09-05 21:40 1331606.jpg
-rw-r--r-- 1 sanja sanja 246165 2009-09-05 21:40 1341668.jpg
-rw-r--r-- 1 sanja sanja 367938 2009-09-05 21:43 1349049.jpg
-rw-r--r-- 1 sanja sanja 198620 2009-09-05 21:40 1350940.jpg
-rw-r--r-- 1 sanja sanja 174071 2009-09-05 21:43 1359446.jpg
-rw-r--r-- 1 sanja sanja 133840 2009-09-05 21:32 1373001.jpg
-rw-r--r-- 1 sanja sanja 218315 2009-09-05 21:44 1383214.jpg
-rw-r--r-- 1 sanja sanja 262575 2009-09-05 21:16 1386467.jpg
-rw-r--r-- 1 sanja sanja 150136 2009-09-05 21:14 1391170.jpg
-rw-r--r-- 1 sanja sanja 233008 2009-09-05 21:17 1391382.jpg
-rw-r--r-- 1 sanja sanja 354680 2009-09-05 21:45 1400100.jpg
-rw-r--r-- 1 sanja sanja 338042 2009-09-05 21:14 1405493.jpg
-rw-r--r-- 1 sanja sanja 311010 2009-09-05 21:26 1407882.jpg
-rw-r--r-- 1 sanja sanja 281915 2009-09-05 21:27 1411128.jpg
-rw-r--r-- 1 sanja sanja 269095 2009-09-05 21:14 1475450.jpg
-rw-r--r-- 1 sanja sanja 357223 2009-09-05 21:44 1477523.jpg
-rw-r--r-- 1 sanja sanja 216095 2009-09-05 21:33 1481150.jpg
-rw-r--r-- 1 sanja sanja 325289 2009-09-05 21:27 1506609.jpg
-rw-r--r-- 1 sanja sanja 199951 2009-09-05 21:34 1507299.jpg
-rw-r--r-- 1 sanja sanja 153751 2009-09-05 21:28 1513875.jpg
-rw-r--r-- 1 sanja sanja 372460 2009-09-05 21:44 1517510.jpg
-rw-r--r-- 1 sanja sanja 331659 2009-09-05 21:29 1522064.jpg
-rw-r--r-- 1 sanja sanja 291390 2009-09-05 21:29 1522151.jpg
sanja@amigo:~/documents/f-16/img$  mkdir smile; for f in *.jpg ; do convert -quality 70 -resize 800 "$f" "smile/${f%.jpg}.jpg" ; done
sanja@amigo:~/documents/f-16/img$ ls -Rl
.:
итого 6117
-rw-r--r-- 1 sanja sanja  42525 2009-09-06 22:34 080109-F-8362B-327.jpg
-rw-r--r-- 1 sanja sanja  44101 2009-09-06 22:34 080320-F-6244S-066.jpg
-rw-r--r-- 1 sanja sanja  39989 2009-09-06 22:34 090123-F-8308W-054.jpg
-rw-r--r-- 1 sanja sanja 136678 2009-09-05 21:48 1296910.jpg
-rw-r--r-- 1 sanja sanja 166859 2009-09-05 21:40 1331606.jpg
-rw-r--r-- 1 sanja sanja 246165 2009-09-05 21:40 1341668.jpg
-rw-r--r-- 1 sanja sanja 367938 2009-09-05 21:43 1349049.jpg
-rw-r--r-- 1 sanja sanja 198620 2009-09-05 21:40 1350940.jpg
-rw-r--r-- 1 sanja sanja 174071 2009-09-05 21:43 1359446.jpg
-rw-r--r-- 1 sanja sanja 133840 2009-09-05 21:32 1373001.jpg
-rw-r--r-- 1 sanja sanja 218315 2009-09-05 21:44 1383214.jpg
-rw-r--r-- 1 sanja sanja 262575 2009-09-05 21:16 1386467.jpg
-rw-r--r-- 1 sanja sanja 150136 2009-09-05 21:14 1391170.jpg
-rw-r--r-- 1 sanja sanja 233008 2009-09-05 21:17 1391382.jpg
-rw-r--r-- 1 sanja sanja 354680 2009-09-05 21:45 1400100.jpg
-rw-r--r-- 1 sanja sanja 338042 2009-09-05 21:14 1405493.jpg
-rw-r--r-- 1 sanja sanja 311010 2009-09-05 21:26 1407882.jpg
-rw-r--r-- 1 sanja sanja 281915 2009-09-05 21:27 1411128.jpg
-rw-r--r-- 1 sanja sanja 269095 2009-09-05 21:14 1475450.jpg
-rw-r--r-- 1 sanja sanja 357223 2009-09-05 21:44 1477523.jpg
-rw-r--r-- 1 sanja sanja 216095 2009-09-05 21:33 1481150.jpg
-rw-r--r-- 1 sanja sanja 325289 2009-09-05 21:27 1506609.jpg
-rw-r--r-- 1 sanja sanja 199951 2009-09-05 21:34 1507299.jpg
-rw-r--r-- 1 sanja sanja 153751 2009-09-05 21:28 1513875.jpg
-rw-r--r-- 1 sanja sanja 372460 2009-09-05 21:44 1517510.jpg
-rw-r--r-- 1 sanja sanja 331659 2009-09-05 21:29 1522064.jpg
-rw-r--r-- 1 sanja sanja 291390 2009-09-05 21:29 1522151.jpg
drwxr-xr-x 2 sanja sanja    936 2009-11-11 13:58 smile

./smile:
итого 1272
-rw-r--r-- 1 sanja sanja 40218 2009-11-11 13:58 080109-F-8362B-327.jpg
-rw-r--r-- 1 sanja sanja 41979 2009-11-11 13:58 080320-F-6244S-066.jpg
-rw-r--r-- 1 sanja sanja 37622 2009-11-11 13:58 090123-F-8308W-054.jpg
-rw-r--r-- 1 sanja sanja 25803 2009-11-11 13:58 1296910.jpg
-rw-r--r-- 1 sanja sanja 30011 2009-11-11 13:58 1331606.jpg
-rw-r--r-- 1 sanja sanja 49901 2009-11-11 13:58 1341668.jpg
-rw-r--r-- 1 sanja sanja 68429 2009-11-11 13:58 1349049.jpg
-rw-r--r-- 1 sanja sanja 30170 2009-11-11 13:58 1350940.jpg
-rw-r--r-- 1 sanja sanja 31502 2009-11-11 13:58 1359446.jpg
-rw-r--r-- 1 sanja sanja 23566 2009-11-11 13:58 1373001.jpg
-rw-r--r-- 1 sanja sanja 30244 2009-11-11 13:58 1383214.jpg
-rw-r--r-- 1 sanja sanja 56289 2009-11-11 13:58 1386467.jpg
-rw-r--r-- 1 sanja sanja 26963 2009-11-11 13:58 1391170.jpg
-rw-r--r-- 1 sanja sanja 47028 2009-11-11 13:58 1391382.jpg
-rw-r--r-- 1 sanja sanja 49502 2009-11-11 13:58 1400100.jpg
-rw-r--r-- 1 sanja sanja 77649 2009-11-11 13:58 1405493.jpg
-rw-r--r-- 1 sanja sanja 68148 2009-11-11 13:58 1407882.jpg
-rw-r--r-- 1 sanja sanja 67277 2009-11-11 13:58 1411128.jpg
-rw-r--r-- 1 sanja sanja 28805 2009-11-11 13:58 1475450.jpg
-rw-r--r-- 1 sanja sanja 58248 2009-11-11 13:58 1477523.jpg
-rw-r--r-- 1 sanja sanja 37615 2009-11-11 13:58 1481150.jpg
-rw-r--r-- 1 sanja sanja 53961 2009-11-11 13:58 1506609.jpg
-rw-r--r-- 1 sanja sanja 34424 2009-11-11 13:58 1507299.jpg
-rw-r--r-- 1 sanja sanja 27417 2009-11-11 13:58 1513875.jpg
-rw-r--r-- 1 sanja sanja 62651 2009-11-11 13:58 1517510.jpg
-rw-r--r-- 1 sanja sanja 69856 2009-11-11 13:58 1522064.jpg
-rw-r--r-- 1 sanja sanja 61877 2009-11-11 13:58 1522151.jpg

novitchok ★★★★★
()
Ответ на: комментарий от novitchok

Лучше через find, т.к. если у вас в директории очень много файлов, может не хватить лимита на кол-во аргументов командной строки.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Rastafarra

это не прокатит для файлов с " " (пробелом) внутри ;)

sanja@amigo:~/documents/esm_project-956$ ls -Rl
.:
итого 10269
-rw-r--r-- 1 sanja sanja 2488368 2006-05-10 01:32 Draw 1.jpg
-rw-r--r-- 1 sanja sanja 1955880 2006-05-08 04:39 Draw 2.jpg
-rw-r--r-- 1 sanja sanja 1795401 2006-05-09 12:07 Draw 3.jpg
-rw-r--r-- 1 sanja sanja 1438258 2006-05-09 21:02 Draw 4.jpg
-rw-r--r-- 1 sanja sanja 1614327 2006-05-10 00:42 Draw 5.jpg
-rw-r--r-- 1 sanja sanja 1198608 2006-05-10 00:52 Draw 6.jpg
sanja@amigo:~/documents/esm_project-956$ mkdir smile; for f in *.jpg ; do convert -resize 800 "$f" "smile/${f%.jpg}.jpg" ; done
sanja@amigo:~/documents/esm_project-956$ ls -Rl
.:
итого 10269
-rw-r--r-- 1 sanja sanja 2488368 2006-05-10 01:32 Draw 1.jpg
-rw-r--r-- 1 sanja sanja 1955880 2006-05-08 04:39 Draw 2.jpg
-rw-r--r-- 1 sanja sanja 1795401 2006-05-09 12:07 Draw 3.jpg
-rw-r--r-- 1 sanja sanja 1438258 2006-05-09 21:02 Draw 4.jpg
-rw-r--r-- 1 sanja sanja 1614327 2006-05-10 00:42 Draw 5.jpg
-rw-r--r-- 1 sanja sanja 1198608 2006-05-10 00:52 Draw 6.jpg
drwxr-xr-x 2 sanja sanja     240 2009-11-11 16:08 smile

./smile:
итого 220
-rw-r--r-- 1 sanja sanja 35172 2009-11-11 15:41 Draw 1.jpg
-rw-r--r-- 1 sanja sanja 26390 2009-11-11 15:48 Draw 2.jpg
-rw-r--r-- 1 sanja sanja 25514 2009-11-11 16:01 Draw 3.jpg
-rw-r--r-- 1 sanja sanja 47169 2009-11-11 16:01 Draw 4.jpg
-rw-r--r-- 1 sanja sanja 43700 2009-11-11 16:02 Draw 5.jpg
-rw-r--r-- 1 sanja sanja 35529 2009-11-11 16:08 Draw 6.jpg
novitchok ★★★★★
()
Ответ на: комментарий от novitchok

Я извиняюсь.
Я не сказал, что использую эту программу под виндой :).
Просто я просмотрел все ее возможные параметры и не нашел ничего подходящего не нашел.
А при выполнении такой команды
convert -resize 256x256 С:\Input\*.jpg С:\Output\
в папке Output появляются файлы с именами "-0", "-1" и т.д.

Slon747
() автор топика
Ответ на: комментарий от Slon747

Ну теоретически bash можно под виндой поставить и циклы в нём крутить, потому-что cmd в винде очень убог, даже паузы нет, народ паузу пингом локалхоста заменяет :)

Deleted
()
Ответ на: комментарий от Deleted

В том то и дело, что хотелось бы без цикла обойтись, т.к. запускать тысячу раз одну и ту же программу не очень корректно, когда можно запустить ее один раз с указанием каталога-источника.
Пока что не нашел подходящей.
Наверное, придется самому написать.

Slon747
() автор топика
Ответ на: комментарий от Deleted

Таким способом будут перезаписаны изображения.
Немного не то, в моем случае уже ближе.
Спасибо.

Slon747
() автор топика
Ответ на: комментарий от Slon747

Таким способом будут перезаписаны изображения.

man mogrify!

Если указать опцию -path, то он не будет перезаписывать, а просто сложит обработанные изображения в другую директорию.

Deleted
()
Ответ на: комментарий от Deleted

Как я говорил, я использую ImageMagick под виндой.
Параметры изучал с сайта программы и по ее помощи.
Ни там ни там оции -path не нашел.
Попробовал вот так:
mogrify -resize 256x256 С:\Input\*.jpg -path С:\Output\
Все равно переписывает в папке-источнике.
Хотя не ругается на эту опцию.

Slon747
() автор топика
Ответ на: комментарий от Slon747

Попробовал вот так:

mogrify -resize 256x256 С:\Input\*.jpg -path С:\Output\

Все равно переписывает в папке-источнике.

Он похоже не воспринимает опции после списка файлов. Пробуй так:

mogrify -resize 256x256 -path С:\Output\ С:\Input\*.jpg

Deleted
()
Ответ на: комментарий от Deleted

>Он похоже не воспринимает опции после списка файлов. Пробуй так:
mogrify -resize 256x256 -path С:\Output\ С:\Input\*.jpg

Не прокатило.
Но вот так сработало:
mogrify -path С:\Output\ -resize 256x256 С:\Input\*.jpg

Спасибо!

Slon747
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.