¿Cómo hago que Shotwell regenere todas las miniaturas?

15

Por alguna razón desconocida, todas las miniaturas se pierden en mi Shotwell, en cambio, todos los iconos son grises. Las imágenes en sí están bien y puedo abrirlas todas en Shotwell.

Solo hay carpetas vacías, por .shotwell/thumbs/lo que parece que las miniaturas no se generan en absoluto.

También he tratado de reinstalar Shotwell (purgándolo primero) sin ningún cambio.

¿Cómo hago que Shotwell regenere todas las miniaturas?

hultqvist
fuente

Respuestas:

14

Este script de shell regenerará sus miniaturas de tamaños de 128px y 360px para que vea al menos algo en el visor.

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
lkp
fuente
Si sus fotos tienen miniaturas exif, entonces puede reemplazar la línea de conversión con esto:tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
lkp
El problema con esta solución es que cualquier transformación que el usuario haya realizado en las fotos (rotación, recorte, corrección de color) no se reflejará en las miniaturas. Shotwell almacena todas las miniaturas completamente transformadas.
Jim Nelson
Este script asume que estás en la parte superior de tu directorio de inicio, pero por lo demás funciona de maravilla. ¡Gracias!
Reece
bitbucket.org/reece/reece-base/src/tip/bin/… builds también crea los pulgares 360x360.
Reece
Hoy en día, también puede simplemente eliminar ~/.cache/shotwell/thumbs, y Shotwell 0.22.x los regenerará según sea necesario.
Lambart el
7

Una manera fácil para Shotwell de regenerar las miniaturas (esta es una solución alternativa):

  1. Ve a tu página de fotos.
  2. Editar -> Seleccionar todo
  3. Ctrl+ R(rotar)
  4. Cuando termine de girar, Ctrl+ Z(deshacer).

Esto obligará a Shotwell a regenerar todas las fotos y honrar cualquier transformación que haya almacenado para ellas.

Como se mencionó en phq, hay un error sobresaliente para solucionar esto, por lo que no necesitará esta solución. Hasta entonces, esta es la forma recomendada de resolver este problema. El script publicado anteriormente no respetará las transformaciones, lo que significa que es posible que sus miniaturas no se vean como sus fotos en Shotwell.

Jim Nelson
fuente
Solo una nota al margen, ya que sigue siendo lo mismo en Shotwell 0.13.1: el giro horizontal parece ser una transformación un poco más rápida (probado en 1500 fotos de 8mpix).
cprn
5

Acabo de usar el script de shell proporcionado en esta respuesta , pero tengo alrededor de 22000 miniaturas para generar.

Así que aquí hay una versión bash de este script, usando en ~/.shotwelllugar de ~/.local/shotwell(que es lo que tengo) y usando tantos núcleos como mi procesador (¡8 veces más rápido en mi 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
Benjamin Sonntag
fuente
5

Actualizar con shotwell 0.18 miniaturas ahora se generan cuando se ven manualmente.

¡No quite .shotwell / thumbs!

Según este error en la plataforma de lanzamiento, las miniaturas solo se generan en la importación.

Las miniaturas solo se generan en la importación. Si las miniaturas se eliminan del disco, no se regeneran.

hultqvist
fuente
Con Shotwell 0.22 (es decir, Ubuntu 16.04) puede eliminar ~ / .cache / shotwell / thumbs, y Shotwell los regenerará según sea necesario.
Lambart el
3

Shotwell versión 0.13.11 en Ubuntu 12.10 Las miniaturas parecen ya no estar ubicadas en .shotwell / thumbs pero ahora en .cache / shotwell. Puede verificar que el usuario tenga todos los derechos para leer los thumbs. Tener acceso a las imágenes pero no a los pulgares puede causar pulgares grises.

Ludovic Cheron
fuente
No ha abordado la pregunta sobre la regeneración de los pulgares.
hultqvist
1
@phq si hubiera leído la pregunta, vería que la pregunta no es necesariamente para regenerar realmente los thubs , sino cómo recuperar los pulgares para los cuales el OP hipotetiza los pulgares que faltan y, por lo tanto, propone la regeneración como un arreglo. En caso de que los pulgares estén realmente allí, pero en una carpeta diferente o con un permiso incorrecto, esta respuesta es acertada. Además de eso, incluso si solo aceptara respuestas que solo trataran tontamente el tema de la pregunta, tenga en cuenta que esta respuesta sigue siendo útil como comentario (que phq no hubiera podido ...
berdario
... publicar como un verdadero comentario, debido a su bajo puntaje de reputación)
berdario
2

Shotwell 0.28.4 (Braunschweig) a veces no crea miniaturas de video. El siguiente script derivado de la respuesta aceptada corrige esto:

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

mrin
fuente
1

Para la versión 0.26.3 (actualizada a partir de noviembre de 2017), con Shotwell cerrado, simplemente elimine las miniaturas en

  • / home / user_name /.cache/shotwell/thumbs/thumbs128 y en
  • / home / user_name /.cache/shotwell/thumbs/thumbs360

y enciende Shotwell, otra vez.

loco por natty
fuente