Tôi chỉ sử dụng tập lệnh shell được đưa ra trong câu trả lời này , nhưng tôi có khoảng 22000 hình thu nhỏ để tạo.
Vì vậy, đây là phiên bản bash của tập lệnh này, sử dụng ~/.shotwell
thay vì ~/.local/shotwell
(đó là những gì tôi có) và sử dụng nhiều lõi như bộ xử lý của tôi có (nhanh hơn 8 lần trong trường hợp của tôi!):
#!/bin/bash
# under linux, use this to launch as many convert as your processor core number
#MAX_PROCESSES=`cat /proc/cpuinfo |grep ^processor | wc -l`
# or use a static value
MAX_PROCESSES=4
sqlite3 ~/.shotwell/data/photo.db "select id||' '||filename from PhotoTable order by timestamp desc" |
while read id filename; do
for size in 128 360; do
tf=$(printf ~/.shotwell/thumbs/thumbs${size}/thumb%016x.jpg $id);
test -e "$tf" || {
echo "Generating thumb for $filename ($tf)";
convert "$filename" -auto-orient -thumbnail ${size}x${size} $tf &
RUNNING="`jobs -p |wc -l`"
while [ "$RUNNING" -ge "$MAX_PROCESSES" ]
do
sleep 0.3
RUNNING="`jobs -p |wc -l`"
done
}
done
done
tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf