С нами с 07.10.10
Сообщения: 891
Рейтинг: 1316
|
Добавлено: 23/03/17 в 19:08 |
Подскажите пожалуйста. Может есть готовое решение для пакетной обработки фоток на сервере? Мне нужно сделать ресайз с понижением размера до 1600 по любой из сторон в конкретной директории с учетом всех поддиректорий (их под тысячу). Понижение качества у mogrify вроде по умолчанию есть небольшое.
Сам нашел вот такое:
Код: [развернуть] | !/bin/bash
for i in *.jpg;
do
echo "Working on $i ..."
mogrify -resize 1600×1600\> $i $i; done
echo " "
echo "... Done!"
echo " "
exit 0 |
Только в этом скрипте поддиректории не учитываются я так понимаю. Ну и главное - запускать обработку нужно периодически на небольшие кусочки из всего объема фоток. Иначе у сервака коленки подогнутся надолго.
Я точно не смогу такое чудо придумать. Но ведь задача не очень редкая, наверняка есть готовые решения. Найти сам не смог.
Спасибо
|
|
|
|
С нами с 25.12.14
Сообщения: 602
Рейтинг: 441
|
Добавлено: 23/03/17 в 19:48 |
|
|
|
|
С нами с 29.11.14
Сообщения: 254
Рейтинг: 575
|
Добавлено: 23/03/17 в 19:50 |
Вместо
for i in *.jpg;
можно написать
Код: | for i in `find /DIR/|grep '\.jpg$'`; |
DIR нужно заменять на свою директорию картиок.
И оно начнёт понимать директории и вложенные в них директории тоже
|
|
|
|
С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032
|
Добавлено: 24/03/17 в 02:39 |
- imagemagick можно "попросить" не есть все доступные ресурсы.
Цитата: |
Environment Variables
...
MAGICK_THREAD_LIMIT Set maximum parallel threads. Many ImageMagick algorithms run in parallel on multi-processor systems. Use this environment variable to set the maximum number of threads that are permitted to run in parallel.
MAGICK_THROTTLE_LIMIT Periodically yield the CPU for at least the time specified in milliseconds.
|
- mogrify не нужно указывать "выходной" файл. Он просто перезаписывает входной файл.
Например так можно обработать все картинки внутри /home/pics с ограничением в один поток
Код: |
#!/usr/bin/env bash
export MAGICK_THREAD_LIMIT=1
find /home/pics -iname \*.jpg | while read fn; do
echo $fn
mogrify -resize 1600x1600\> $fn
done
echo done
|
|
|
apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only
|
8
|
|
|
С нами с 07.10.10
Сообщения: 891
Рейтинг: 1316
|
Добавлено: 24/03/17 в 20:04 |
Огромное спасибо всем за помощь.
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |