1

У меня есть сто изображений, и я хочу усреднить их по 5 за раз.

Команда imagemagick для первых 5:

convert -background transparent %d.jpg[1-5] -average output1.jpg

Команда imagemagick для второго 5:

convert -background transparent %d.jpg[2-6] -average output2.jpg

Команда imagemagick для третьего 5:

convert -background transparent %d.jpg[3-7] -average output3.jpg

Как я могу сделать это в Windows программно? Другими словами, могу ли я написать командный файл для запуска imagemagick, чтобы сделать это с циклом? Или есть лучший язык / метод / альтернатива?

2 ответа2

1

Это должно быть достаточно легко сделать с помощью командного файла, как показано ниже:

@echo off
setlocal enabledelayedexpansion
for /l %%f in (1,1,5) do (
    set /a cnt=%%f+4

    REM If the output looks ok, remove the "echo" from the following line to actually run convert
    echo convert -background transparent %%d.jpg[%%f-!cnt!] -average output%%f.jpg
)
endlocal

Вот вывод с "эхо" на месте:

convert -background transparent %d.jpg[1-5] -average output1.jpg
convert -background transparent %d.jpg[2-6] -average output2.jpg
convert -background transparent %d.jpg[3-7] -average output3.jpg
convert -background transparent %d.jpg[4-8] -average output4.jpg
convert -background transparent %d.jpg[5-9] -average output5.jpg

Совет: Не забудьте указать полный путь к Convert.exe ImageMagick, иначе собственной команде конвертировать Windows' (преобразует объем FAT в NTFS), скорее всего, по умолчанию запускается.

0

Вот код, который я собрал вместе, который работает как пакетный файл Windows для тысяч изображений:

  1. Рем мы будем объединять 5 изображений
  2. set /a U = 0
  3. set /a V = 1
  4. set /a W = 2
  5. set /a X = 3
  6. set /a Y = 4
  7. Рем мы будем смотреть только на первые 15 изображений
  8. набор / терминатор = 15
  9. : петля
  10. set /a W =% W% + 1
  11. set /a V =% V% + 1
  12. set /a U =% U% + 1
  13. set /a X =% X% + 1
  14. set /a Y =% Y% + 1
  15. если% Y% ==% терминатор% перейти к закрытию
  16. перейти к открытию
  17. :близко
  18. Пауза
  19. выход
  20. :открыть
  21. convert %% d.jpg [% U% -% Y%] -average -auto-level% U% out.jpg
  22. Goto Loop

Есть забавный случай использования цикла for next когда нужно помнить, чтобы установить задержанное локальное выражение и использовать удар (!) символ вокруг имени переменной вместо знака процента. Я узнал об этом самостоятельно, прежде чем вернулся сюда и увидел, что ты решил мой вопрос. Простое goto с циклом более прозрачно, хотя оператор for более элегантен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .