Come faccio a far rigenerare a Shotwell tutte le anteprime?


15

Per qualche ragione sconosciuta, tutte le miniature sono perse nel mio Shotwell, invece tutte le icone sono grigie. Le immagini stesse sono tutte a posto e posso aprirle tutte in Shotwell.

Ci sono solo cartelle vuote in .shotwell/thumbs/ modo che le anteprime non vengano affatto generate.

Ho anche provato a reinstallare Shotwell (eliminandolo prima) senza alcuna modifica.

Come faccio a far rigenerare a Shotwell tutte le anteprime?

Risposte:


14

Questo script shell rigenera le tue miniature di dimensioni 128px e 360px in modo da vedere almeno qualcosa nel visualizzatore.

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

Se le tue foto hanno miniature exif, puoi sostituire la linea di conversione con questa:tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
lkp

Il problema con questa soluzione è che qualsiasi trasformazione che l'utente ha apportato alle foto - rotazione, ritaglio, correzione del colore - non si rifletterà nelle miniature. Shotwell memorizza tutte le anteprime completamente trasformate.
Jim Nelson,

Questo script presuppone che tu sia nella parte superiore della tua home directory, ma per il resto funziona come un incantesimo. Grazie!
Reece,

bitbucket.org/reece/reece-base/src/tip/bin/… builds crea anche i pollici 360x360.
Reece,

Al giorno d'oggi, puoi anche semplicemente eliminare ~/.cache/shotwell/thumbse Shotwell 0.22.x li rigenererà secondo necessità.
Lambart,

7

Un modo semplice per Shotwell di rigenerare le anteprime (questa è una soluzione alternativa):

  1. Vai alla tua pagina Foto.
  2. Modifica -> Seleziona tutto
  3. Ctrl+ R(ruota)
  4. Al termine della rotazione, Ctrl+ Z(annulla).

Ciò costringerà Shotwell a rigenerare tutte le foto e onorare eventuali trasformazioni memorizzate per loro.

Come accennato da phq, esiste un bug eccezionale per risolvere questo problema, quindi non avrai bisogno di questa soluzione alternativa. Fino ad allora, questo è il modo consigliato per risolvere questo problema. Lo script pubblicato sopra non rispetterà le trasformazioni, il che significa che è possibile che le anteprime non assomiglino alle foto in Shotwell.


Solo una nota a margine in quanto è sempre lo stesso in Shotwell 0.13.1 - il capovolgimento orizzontale sembra essere una trasformazione un po 'più veloce (testato su 1500 foto da 8mpix).
cprn,

5

Ho appena usato lo script di shell fornito in questa risposta , ma ho circa 22000 miniature da generare.

Quindi ecco una versione bash di questo script, usando ~/.shotwellinvece di ~/.local/shotwell(che è quello che ho) e usando tutti i core del mio processore (8 volte più veloce nel mio caso!):

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

Aggiorna Con shotwell ora vengono generate 0.18 miniature quando vengono visualizzate manualmente.

Non rimuovere .shotwell / thumbs!

Secondo questo bug nel launchpad, le miniature vengono generate solo durante l'importazione.

Le miniature vengono generate solo al momento dell'importazione. Se le miniature vengono rimosse dal disco, non vengono rigenerate.


Con Shotwell 0.22 (ovvero Ubuntu 16.04) puoi semplicemente eliminare ~ / .cache / shotwell / pollici, e Shotwell li rigenererà secondo necessità.
Lambart,

3

Shotwell versione 0.13.11 su Ubuntu 12.10 Le miniature non sembrano più lunghe da trovare in .shotwell / thumbs ma ora in .cache / shotwell È possibile verificare che l'utente disponga di rigth completi per leggere i pollici. Avere accesso alle immagini ma non ai pollici può causare pollici grigi.


Non hai affrontato la domanda sulla rigenerazione dei pollici.
hultqvist,

1
@phq se avessi letto la domanda, vedresti che la domanda non è necessariamente quella di rigenerare effettivamente i thub , ma come recuperare i pollici per i quali l'OP ipotizza i pollici mancanti, e quindi proporre la rigenerazione come una soluzione. Nel caso in cui i pollici siano effettivamente lì, ma in una cartella diversa o con l'autorizzazione sbagliata, questa risposta è effettivamente esatta. Inoltre, anche se accetteresti solo risposte che trattano stupidamente solo l'argomento della domanda, tieni presente che questa risposta è ancora utile come commento (che phq non sarebbe stato in grado di ...
berdario,

... pubblica un commento vero, a causa del suo basso punteggio di reputazione)
berdario,

2

Shotwell 0.28.4 (Braunschweig) a volte non crea anteprime video. Il seguente script derivato dalla risposta accettata risolve questo problema:

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

Per la versione 0.26.3 (aggiornata a novembre 2017), con Shotwell chiuso, basta eliminare le anteprime in

  • / home / nome_utente /.cache/shotwell/thumbs/thumbs128 e in
  • / home / nome_utente /.cache/shotwell/thumbs/thumbs360

e accendi di nuovo Shotwell.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.