Jak zmusić Automatora do przetwarzania obrazów za pomocą ImageMagick w skrypcie poleceń?


2

Tworzę obieg pracy Automatora, który używa akcji skryptu powłoki do przetwarzania wybranych obrazów za pomocą polecenia composite imagemagick. Tylko że mam problemy z uruchomieniem. Zgodnie z wynikami, które otrzymuję, gdy uruchamiam przepływ pracy, wszystko działa, ale wiem, że nie wynika to z faktu, że zmiany, których oczekuję w folderze obrazów, nie są obecne. Wiem, że polecenie imagemagick, którego używam, jest prawidłowe, ponieważ działa poprawnie z konsoli. (Powtórzyłem echo komendy złożonej na wyjściu i skopiowałem ją do sesji terminalu. Działa jak urok). BTW: Przepływ pracy dla przetwarzania zanikania filmu, który stworzyłem. Tak, wiem, że mógłbym użyć narzędzi wideo, aby osiągnąć to samo, ale te, do których mam dostęp, mogą podnieść jakość obrazu na wyjściu.

Oto skrypt

imagesCount=$#
rate=$(echo "scale=2; 100/$imagesCount"|bc)
percentage=$rate
for f in "$@"; do
    fileName=${f%.*}
    composite -blend "$percentage" -size 1280x720 "$f" xc:black -alpha Set "$fileName-1.jpg"
    percentage=$(echo "scale=2; $percentage+$rate"|bc)
done

Na początku myślałem, że przyczyną problemu mogą być spacje na ścieżkach, ale usunąłem tę możliwość, przenosząc pliki do ścieżki bez spacji, ale to nie miało żadnego efektu.

Jestem prawie pewien, że problem jest związany z czymś w poleceniu bash, ale w ogóle nie znam basha, to jest mój pierwszy raz pisanie skryptów poleceń bash, ale mam dużą wiedzę na temat skryptów konsoli Windows i nie miałbym problemów sprawiając, że tam zadziała.

Jeśli błąd w skrypcie nie jest wystarczająco oczywisty, aby go wyłapać, czy ktoś zaproponuje metodę debugowania tego, żebym mógł dowiedzieć się, dlaczego obrazy nie są przetwarzane, mimo że skrypt działa bezbłędnie?


Może to problem ze ŚCIEŻKĄ. Czy to działa, gdy compositezastąpisz ścieżką bezwzględną (można to ustalić, wykonując which compositena terminalu)?
Percival Ulysses,

Poniższy wiersz kodu wydaje się być brakuje cudzysłów: odsetek = $ (skala = 2; $ + $ stawka odsetek "| bc)
Kaydell

Dzięki za zwrócenie uwagi na Kaydell. Brakowało również echa.
Greg

Kompozyt jest poprawnie zainstalowany. Użyłem instalatora Cactus Labs ImageMagick, który instaluje ImageMagick i dodaje go do ścieżki. Bardzo przydatny.
Greg

Czy udało się zmienić $fna, fczy był to tylko błąd transkrypcji? Również twoja kapitalizacja fileNamejest niespójna.
beroe

Odpowiedzi:


2

Zrobiłbym to wszystko w wierszu poleceń jako skrypt powłoki zamiast używać Automatora do jego uruchomienia. Wpisz #!/bin/bashjako pierwszy wiersz i uruchom go jako

myscript.sh image*.png

gdzie image*.pngjest twój zestaw plików graficznych, które najwyraźniej wybierasz w Automatorze?

Jeśli chcesz uruchomić go na wszystkich plikach w folderze, możesz to również zrobić.

Możesz również przetestować skrypt w automatorze, używając echo ${f%.*}samych poleceń.


1

Wymień for $fsię for f. for $f in aa; do :; donepowoduje błąd jak `$f': not a valid identifier.

Również jeśli compositenie ma na ścieżce, podaj pełną ścieżkę do niej (jak /usr/local/bin/composite).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.