Создание миниатюр с тем же именем, что и фотографии

Пожалуйста, вот мой маленький код для создания миниатюр изображений, сохраненных в папке с именем «pictures», и сохранения их в другой папке с именем «thumbs».

#!/bin/bash
for i in *.jpg
do
convert -thumbnail 100 $i thumbs/$i
done

Однако, есть две вещи, которые программа не делает:

  1. Она не сохраняет названия картинок в миниатюре. Например, я бы хотел, чтобы он генерировал миниатюру с именем pic.jpg для картинки с именем pic.jpg

  2. Кроме того, когда я запускаю программу, я не хочу ее чтобы создать миниатюру для изображения, оно уже создало миниатюру, если только это изображение не было изменено.

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

2
задан 16 November 2015 в 04:30

1 ответ

Согласно документации ImageMagick ,

Командная строка ImageMagick состоит из

  1. одного или нескольких обязательных входных имен файлов.
  2. ноль, один или несколько параметров изображения.
  3. ноль, один или несколько операторов изображения.
  4. ноль, один или несколько операторов последовательности изображений.
  5. ноль, один или несколько стеков изображений.
  6. ноль или одно имя файла выходного изображения (требуется для преобразования, составления, монтажа, сравнения, импорта, заклинания).

Так что вам нужно иметь исходный параметр изображения перед командой -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;
0
ответ дан 16 November 2015 в 04:30

Другие вопросы по тегам:

Похожие вопросы: