Tôi có một thư mục chứa đầy hình ảnh mà tôi muốn biến thành hình gif.imagemagick chuyển đổi độ trễ khung hình riêng lẻ trong gif
Mỗi tên tập tin sau mô hình này: <zero_padded_index>_<delay_in_milliseconds>.gif
Ví dụ:00001_1432.gif
tôi có thể tạo ra các hình ảnh động gif với ImageMagick: convert -loop 0 -delay 10 *.gif out.gif
Vấn đề là, tôi muốn mỗi frame để có một độ trễ khác nhau dựa trên chữ số thứ hai trong tên của nó.
convert -delay 0 -loop 0 *.gif output.gif
for gif in *.gif; do
name=${gif%.gif}
index=$(echo ${name%-*} | sed 's/0*//')
delay=${name#*-}
# 1. convert milliseconds to w/e imagemagick -delay uses.
# 2. update the frame at the correct index.
done;
Tôi có từng bước xây dựng gif không? Hoặc quay trở lại và thay đổi chúng sau khi thực tế? Sườn tưởng tượng của tôi không được tính ngang.
[Không phân tích đầu ra của 'ls'] (http://mywiki.wooledge.org/ParsingLs), bạn có thể sử dụng globbing thay thế:' cho gif_file trong * .gif; làm [...]; done'. Cũng trích dẫn các biến của bạn. 'cắt' là không cần thiết, bạn có thể sử dụng thay thế tham số cho cùng một nhiệm vụ. –