У меня есть папка изображений, которая обслуживает контент, она содержит файлы jpeg, jpg и gif. Все время автоматически добавляются новые файлы.
Я собираюсь добавить следующие команды в crontab (конечно, с соответствующим путем к файлу)
mogrify -quality 80% "* .jpg"
mogrify-качество 80% "* .jpeg"
mogrify-качество 80% "* .gif"
Я хотел бы с уважением спросить, знает ли кто-нибудь, будут ли эти команды обрабатывать файлы несколько раз, поэтому, когда файл преобразуется в 80%, то при следующем запуске cron он еще больше уменьшает его и т. Д.
Гарантирует ли ImageMagick, что он не обрабатывает один и тот же файл дважды, и если нет, то как мне с этим справиться, если я не могу переименовать файлы.
Любая помощь от сообщества будет принята с благодарностью.
Спасибо.
Отредактировано: Спасибо пользователю: Sven за ответ ниже. Вот сценарий, который я сейчас использую, и, похоже, он работает:
Спасибо тебе за это. Похоже, что mogrify может писать на месте предварительно.
Я буду использовать этот скрипт:
#!/bin/bash
watchedFolder=[insert path here]
quality=70
while [ true ]
do
fileName=$(inotifywait -q -e create --format "%f" "$watchedFolder")
sleep 1s
mogrify -quality 80% "$watchedFolder/$fileName"
sleep 2s
echo "Processed " $fileName
sleep 2s
done
IMagick воля обрабатывать любые файлы в любое время, когда вы его вызываете, у него нет способа определить, что файл уже был обработан. В конце концов, вы говорите ему «обрабатывать все файлы jpg», так что это совершенно нормально и ожидаемо.
Есть много способов обойти эту проблему, в зависимости от ваших конкретных обстоятельств.
mogrify
может писать на месте (в отличие от записи в новый файл и последующего удаления старого). Если можно, используйте inotifywatch
узнавать о новых файлах и обрабатывать их по мере их поступления. Запись на месте важна в этом методе, иначе inotifywatch
также увидит новый файл, когда mogrify
выписывает сокращенную версию.