由于某种未知原因,我的 Shotwell 中的所有缩略图都丢失了,所有图标都变成了灰色。图像本身都很好,我可以在 Shotwell 中打开它们。
其中只有空文件夹,.shotwell/thumbs/
因此看起来缩略图根本没有生成。
我也尝试过重新安装 Shotwell(先清除它),没有任何变化。
我如何让 Shotwell 重新生成所有缩略图?
答案1
这个 shell 脚本将重新生成大小为 128px 和 360px 的缩略图,以便您至少可以在查看器中看到一些内容。
sqlite3 ~/.local/share/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 ~/.cache/shotwell/thumbs/thumbs${size}/thumb%016x.jpg $id);
test -e "$tf" || {
echo -n "Generating thumb for $filename ($tf)";
convert "$filename" -auto-orient -thumbnail ${size}x${size} $tf
echo
}
done
done
答案2
Shotwell 重新生成缩略图的简单方法(这是一种解决方法):
- 转到您的照片页面。
- 编辑->全选
- Ctrl+ R(旋转)
- 旋转完成后,Ctrl+ Z(撤消)。
这将强制 Shotwell 重新生成所有照片并遵守其为它们存储的任何转换。
正如 phq 提到的,有一个未解决的错误可以修复此问题,因此您不需要此解决方法。在此之前,这是解决此问题的推荐方法。上面发布的脚本将不是尊重变换,这意味着您的缩略图可能看起来不像 Shotwell 中的照片。
答案3
我刚刚用过这个答案中给出了shell脚本,但我有大约 22000 个缩略图需要生成。
因此,这是此脚本的 bash 版本,使用~/.shotwell
而不是~/.local/shotwell
(这是我所拥有的)并使用与我的处理器一样多的核心(在我的情况下快 8 倍!):
#!/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
答案4
Ubuntu 12.10 上的 Shotwell 版本 0.13.11 缩略图似乎不再位于 .shotwell/thumbs 中,而是位于 .cache/shotwell 中。您可以检查用户是否具有读取缩略图的完整权限。可以访问图片但不能访问缩略图可能会导致缩略图变灰。