Wie bringe ich Shotwell dazu, alle Miniaturansichten zu regenerieren?


15

Aus einem unbekannten Grund gehen alle Thumbnails in meinem Shotwell verloren, stattdessen sind alle Symbole grau. Die Bilder selbst sind alle in Ordnung und ich kann sie alle in Shotwell öffnen.

Es sind nur leere Ordner enthalten, .shotwell/thumbs/sodass die Miniaturansichten anscheinend überhaupt nicht generiert werden.

Ich habe auch versucht, Shotwell ohne Änderung neu zu installieren (indem ich es zuerst lösche).

Wie bringe ich Shotwell dazu, alle Miniaturansichten zu regenerieren?

Antworten:


14

Mit diesem Shell-Skript werden Ihre Miniaturansichten in den Größen 128px und 360px neu erstellt, sodass im Viewer mindestens etwas zu sehen ist.

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

Wenn Ihre Bilder Exif-Thumbnails haben, können Sie die Konvertierungszeile folgendermaßen ersetzen:tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
lkp

Das Problem bei dieser Lösung besteht darin, dass Änderungen, die der Benutzer an den Fotos vorgenommen hat (Drehung, Zuschneiden, Farbkorrektur), nicht in den Miniaturansichten widergespiegelt werden. Shotwell speichert alle Thumbnails vollständig transformiert.
Jim Nelson

In diesem Skript wird davon ausgegangen, dass Sie sich an der Spitze Ihres Basisverzeichnisses befinden, ansonsten jedoch wie ein Zauber funktionieren. Vielen Dank!
Reece

bitbucket.org/reece/reece-base/src/tip/bin/… builds erstellt auch die 360x360 Thumbs.
Reece

Heutzutage können Sie sie auch einfach löschen ~/.cache/shotwell/thumbs, und Shotwell 0.22.x erstellt sie bei Bedarf neu.
Lambart

7

Eine einfache Möglichkeit für Shotwell, Miniaturansichten neu zu generieren (dies ist eine Problemumgehung):

  1. Gehen Sie zu Ihrer Fotoseite.
  2. Bearbeiten -> Alles auswählen
  3. Ctrl+ R(drehen)
  4. Wenn Sie fertig sind, drücken Sie Ctrl+ Z(rückgängig machen).

Dadurch wird Shotwell gezwungen, alle Fotos neu zu generieren und alle für sie gespeicherten Transformationen zu berücksichtigen.

Wie bereits erwähnt, gibt es einen Fehler, der das Problem behebt, sodass Sie diese Problemumgehung nicht benötigen. Bis dahin ist dies der empfohlene Weg, um dieses Problem zu lösen. Das oben veröffentlichte Skript berücksichtigt keine Transformationen. Dies bedeutet, dass Ihre Miniaturansichten möglicherweise nicht wie Ihre Fotos in Shotwell aussehen.


Nur eine Randnotiz, da es in Shotwell 0.13.1 immer noch dieselbe ist - horizontaler Flip scheint eine etwas schnellere Transformation zu sein (getestet auf 1500 8-Megapixel-Fotos).
cprn

5

Ich habe gerade das in dieser Antwort angegebene Shell-Skript verwendet , aber ich muss ungefähr 22000 Thumbnails generieren.

Hier ist eine Bash-Version dieses Skripts mit ~/.shotwellanstelle von ~/.local/shotwell(was ich habe) und mit so vielen Kernen wie mein Prozessor (in meinem Fall 8-mal schneller!):

#!/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

Update Mit shotwell 0.18 werden nun bei manueller Anzeige Thumbnails erzeugt.

Nicht entfernen .shotwell / Daumen!

Entsprechend diesem Fehler im Launchpad werden Thumbnails nur beim Import generiert.

Thumbnails werden nur beim Import generiert. Wenn die Miniaturansichten von der Festplatte entfernt werden, werden sie nicht neu generiert.


Mit 0,22 Shotwell (dh Ubuntu 16.04) können Sie einfach löschen ~ / .cache / Shotwell / Daumen und Shotwell wird sie regenerieren nach Bedarf.
Lambart

3

Shotwell Version 0.13.11 unter Ubuntu 12.10 Thumbnails scheinen sich nicht mehr in .shotwell / thumbs zu befinden, sondern jetzt in .cache / shotwell. Der Zugriff auf Bilder, jedoch nicht auf Daumen, kann zu grauen Daumen führen.


Sie haben die Frage nach der Regeneration der Daumen nicht beantwortet.
Hultqvist

1
@phq wenn du die frage gelesen hättest, würdest du sehen, dass die frage nicht unbedingt ist, die thubs tatsächlich zu regenerieren , sondern wie man die daumen zurückbekommt, für die das op hypothetisch die daumen fehlen, und somit die regeneration als vorschlägt ein Update. Falls die Daumen tatsächlich vorhanden sind, sich jedoch in einem anderen Ordner oder mit der falschen Berechtigung befinden, ist diese Antwort genau richtig. Darüber hinaus, auch wenn Sie nur Antworten akzeptieren würden, die sich dummerweise nur mit dem Thema der Frage befassen, bedenken Sie bitte, dass diese Antwort immer noch als Kommentar nützlich ist (das hätte phq nicht können ..
berdario

... als wahrer Kommentar zu posten, aufgrund seiner geringen Reputation Score)
berdario

2

Shotwell 0.28.4 (Braunschweig) erstellt manchmal keine Video-Thumbnails. Das folgende Skript, das aus der akzeptierten Antwort abgeleitet wurde, behebt dies:

#!/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

Bei Version 0.26.3 (Stand: November 2017), bei geschlossenem Shotwell, löschen Sie einfach die Thumbnails in

  • / home / benutzername /.cache/shotwell/thumbs/thumbs128 und in
  • / home / benutzername /.cache/shotwell/thumbs/thumbs360

und wieder Shotwell starten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.