Пожалуйста, вот мой маленький код для создания миниатюр изображений, сохраненных в папке с именем «pictures», и сохранения их в другой папке с именем «thumbs».
#!/bin/bash
for i in *.jpg
do
convert -thumbnail 100 $i thumbs/$i
done
Однако, есть две вещи, которые программа не делает:
Она не сохраняет названия картинок в миниатюре. Например, я бы хотел, чтобы он генерировал миниатюру с именем pic.jpg
для картинки с именем pic.jpg
Кроме того, когда я запускаю программу, я не хочу ее чтобы создать миниатюру для изображения, оно уже создало миниатюру, если только это изображение не было изменено.
Любая помощь будет очень ценится.
Согласно документации ImageMagick ,
Командная строка ImageMagick состоит из
blockquote>
- одного или нескольких обязательных входных имен файлов.
- ноль, один или несколько параметров изображения.
- ноль, один или несколько операторов изображения.
- ноль, один или несколько операторов последовательности изображений.
- ноль, один или несколько стеков изображений.
- ноль или одно имя файла выходного изображения (требуется для преобразования, составления, монтажа, сравнения, импорта, заклинания).
Так что вам нужно иметь исходный параметр изображения перед командой
-thumbnail 100
.Чтобы запустить конвертирование, только если файл существует, вам нужно добавить тест if.
Кроме того, в цикле for у вас есть
for i in *.jpg
, но затем в команде преобразования у вас естьpictures/$i
. Если я не понимаю, что вы делаете, оба должны быть одинаковыми, как я делал в своем примере сценария. Если вы хотите, чтобы каталог thumbs находился в каталоге images, удалите часть../
из команды convert и если test. Вам нужно будет запустить его из каталога с картинками, или, если вы этого не хотите, вы можете добавитьcd pictures
в начало скрипта.Итак, сценарий должен выглядеть примерно так:
#! /bin/bash for i in *.jpg; do if [ "$i" -nt "../thumbs/$i" ]; then convert "$i" -thumbnail 100 "../thumbs/$i"; fi done;