Shotwellですべてのサムネイルを再生成するにはどうすればよいですか?


15

何らかの未知の理由により、すべてのサムネイルがShotwellで失われ、代わりにすべてのアイコンが灰色になります。画像自体はすべて大丈夫で、Shotwellですべて開くことができます。

空のフォルダのみが存在する.shotwell/thumbs/ため、サムネイルはまったく生成されないようです。

また、何も変更せずにShotwellを(最初にパージして)再インストールしようとしました。

Shotwellですべてのサムネイルを再生成するにはどうすればよいですか?

回答:


14

このシェルスクリプトは、サイズが128ピクセルと360ピクセルのサムネイルを再生成するので、ビューアーに少なくとも何かが表示されます。

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

:あなたの写真がEXIFのサムネイルを持っているなら、あなたはこれで変換ラインを交換することができるtf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
LKP

このソリューションの問題は、ユーザーが写真に対して行った変換(回転、トリミング、色補正)がサムネイルに反映されないことです。Shotwellは、完全に変換されたすべてのサムネイルを保存します。
ジムネルソン

このスクリプトは、ホームディレクトリの最上部にいることを前提としていますが、それ以外は魅力のように機能します。ありがとう!
リース


最近では、単に削除することもでき~/.cache/shotwell/thumbs、Shotwell 0.22.xは必要に応じてそれらを再生成します。
ランバート

7

Shotwellがサムネイルを再生成する簡単な方法(これは回避策です):

  1. 写真ページに移動します。
  2. 編集 -> すべて選択
  3. Ctrl+ R(回転)
  4. 回転が終了したら、Ctrl+ Z(元に戻す)。

これにより、Shotwellはすべての写真を再生成し、保存されたすべての変換を尊重します。

phqが述べたように、これを修正するには未解決のバグがあるため、この回避策は必要ありません。それまでは、これがこの問題を解決するための推奨される方法です。上記のスクリプトは変換を尊重しません。つまり、サムネイルがShotwellの写真のように見えない可能性があります。


Shotwell 0.13.1でも同じであるため、ちょっとした注意が必要です-水平反転は少し高速な変換のようです(1500個の8mpix写真でテスト済み)。
cprn

5

この回答にあるシェルスクリプトを使用しましたが、生成するサムネイルは約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

5

手動で表示すると、ショットウェル0.18のサムネイルが更新されるようになりました。

.shotwell / thumbsは削除しないでください!

ランチパッドのこのバグによると、サムネイルはインポート時にのみ生成されます。

サムネイルはインポート時にのみ生成されます。サムネイルがディスクから削除された場合、それらは再生成されません。


Shotwell 0.22(Ubuntu 16.04)では、〜/ .cache / shotwell / thumbsを削除するだけで、Shotwell 必要に応じてそれら再生成します。
ランバート

3

Ubuntu 12.10のShotwellバージョン0.13.11のサムネイルは、.shotwell / thumbsにあることはもはやないようですが、現在は.cache / shotwellにあります。親指ではなく写真にアクセスできると、親指が灰色になる場合があります。


親指の再生に関する質問に対処していません。
hultqvist

1
@phq質問を読んだ場合、質問は必ずしも実際にThubを再生成する必要はないことがわかりますが、OPが親指を仮定していない親指を取り戻す方法は、次のように提案します。修正。親指が実際にそこにあるが、別のフォルダーにあるか、間違った許可が与えられている場合、この答えは実際に注目されます。その上、質問の件名だけを愚かに扱っている回答だけを受け入れたとしても、この回答はまだコメントとして有用であることを覚えておいてください(phqはできなかったはずです..
ベルダリオ14

...評判スコアが低いため、真のコメントとして投稿してください)
berdario 14

2

Shotwell 0.28.4(Braunschweig)は、ビデオサムネイルを作成しない場合があります。受け入れられた回答から派生した次のスクリプトはこれを修正します。

#!/bin/bash
declare -A default_thumbnail_sizes
declare -A default_thumbnail_checksums
default_thumbnail_sizes[128]="3038"
default_thumbnail_checksums[128]="dc292dd5c9eacadee4fa02c2062d364d8a3a42cb4a58b99abb42dd1950803e4d"
default_thumbnail_sizes[360]="12333"
default_thumbnail_checksums[360]="1f5859761cbbc44f7444b5a61ffd7b2dfe560017d8376905df67db51a4641926"

sqlite3 ~/.local/share/shotwell/data/photo.db \
  "select id||' '||filename from VideoTable" |
  while read id filename
  do
    for size in 128 360
    do
      tf=$(printf ~/.cache/shotwell/thumbs/thumbs${size}/video-%016x.jpg $id);
      exit_code="$?"
      if [[ "$exit_code" != "0" ]]
      then
        echo $id
        continue
      fi

      if [[ -e "$tf" ]]
      then
        tfilelength=$(stat -c '%s' $tf)
        if [[ "$tfilelength" != ${default_thumbnail_sizes[$size]} ]]
        then
          continue
        fi

        tchecksum=$(sha256sum $tf)
        if [[ "$tchecksum" != ${default_thumbnail_checksums[$size]}* ]]
        then
          continue
        fi
      fi

      echo -n "$filename --> $tf";
      ttf=/tmp/$(basename "$tf")
      rm -f "$ttf"
      ffmpeg -i "$filename" -loglevel quiet -vf "thumbnail,scale=${size}:-1" -frames:v 1 "$ttf"
      exit_code="$?"
      if [[ -e "$ttf" && $exit_code == "0" ]]
      then
        echo ": SUCCESS"
        mv -f -v "$ttf" "$tf"
        echo
      else
        echo ": FAILED ($exit_code)"
        echo
      fi
    done
  done


1

バージョン0.26.3(2017年11月現在)の場合、Shotwellを閉じた状態で、サムネイルを削除するだけです

  • / home / user_name /.cache/shotwell/thumbs/thumbs128および
  • / home / user_name /.cache/shotwell/thumbs/thumbs360

そして、再びショットウェルを起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.