Làm cách nào để Trình tự động xử lý hình ảnh bằng ImageMagick trong tập lệnh?


2

Tôi đang tạo một quy trình công cụ Automator sử dụng hành động kịch bản shell để xử lý lựa chọn hình ảnh bằng lệnh tổng hợp hình ảnh. Chỉ có tôi có vấn đề làm cho nó đi. Theo kết quả tôi nhận được khi chạy quy trình làm việc, tuy nhiên mọi thứ đều hoạt động, tôi biết đó không phải là do thực tế là những thay đổi tôi mong đợi sẽ thấy trong thư mục hình ảnh không có. Tôi biết rằng lệnh fantemagick tôi đang sử dụng là chính xác vì nó hoạt động chính xác từ bàn điều khiển. (Tôi lặp lại lệnh tổng hợp với đầu ra & sao chép nó vào một phiên Terminal. Ran như một lá bùa). BTW: Quy trình làm việc để xử lý mờ dần trong một bộ phim chuyển động dừng mà tôi đã thực hiện. Có tôi biết tôi có thể sử dụng các công cụ video để đạt được điều tương tự, nhưng những công cụ tôi có quyền truy cập để tăng chất lượng hình ảnh ở đầu ra.

Đây là kịch bản

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

Lúc đầu, tôi nghĩ nguyên nhân của vấn đề có thể là khoảng trắng trong các đường dẫn, nhưng tôi đã loại bỏ khả năng này bằng cách chuyển các tệp sang một đường dẫn không có khoảng trắng, nhưng điều đó không có tác dụng.

Tôi gần như chắc chắn vấn đề có liên quan đến điều gì đó trong lệnh bash nhưng tôi hoàn toàn không biết bash, đây là lần đầu tiên tôi viết bất kỳ tập lệnh lệnh bash nào, nhưng tôi rất am hiểu về kịch bản bảng điều khiển Windows và sẽ không gặp rắc rối làm việc này ở đó

Nếu lỗi trong tập lệnh không đủ rõ ràng để bắt, ai đó có thể đề xuất một phương pháp để gỡ lỗi này để tôi có thể tìm ra lý do tại sao hình ảnh không được xử lý mặc dù tập lệnh chạy không có lỗi?


Có lẽ đó là một vấn đề PATH. Nó có hoạt động khi bạn thay thế compositebằng đường dẫn tuyệt đối của nó (có thể được xác định bằng cách thực thi which compositetrên Terminal) không?
trăm Ulysses

Dòng mã sau đây dường như thiếu dấu ngoặc kép: phần trăm = $ (tỷ lệ = 2; $ phần trăm + $ tỷ lệ "| bc)
Kaydell

Cảm ơn đã chỉ ra rằng Kaydell. Nó cũng thiếu tiếng vang của nó.
Greg

Hợp chất được cài đặt chính xác. tôi đã sử dụng trình cài đặt Cactus Labs ImageMagick để cài đặt ImageMagick và thêm nó vào đường dẫn. Rất tiện dụng.
Greg

Nó có hoạt động để thay đổi $fthành fhoặc đó chỉ là một lỗi sao chép? Ngoài ra, viết hoa của bạn fileNamekhông nhất quán.
beroe

Câu trả lời:


2

Tôi sẽ chỉ làm toàn bộ điều ở dòng lệnh dưới dạng shell script thay vì sử dụng Automator để khởi chạy nó. Đặt #!/bin/bashlàm dòng đầu tiên và chạy nó dưới dạng

myscript.sh image*.png

nơi image*.pnglà thiết lập của bạn các tập tin hình ảnh mà bạn đang có vẻ chọn trong Automator?

Nếu bạn cần chạy nó trên tất cả các tệp trong một thư mục, điều đó cũng có thể được thực hiện.

Bạn cũng có thể kiểm tra tập lệnh của mình trong trình tự động hóa bằng cách sử dụng echo ${f%.*}thay vì chính các lệnh.


1

Thay thế for $fbằng for f. for $f in aa; do :; donedẫn đến một lỗi như thế `$f': not a valid identifier.

Ngoài ra nếu compositekhông có trên đường dẫn, chỉ định đường dẫn đầy đủ đến nó (như /usr/local/bin/composite).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.