Bagaimana cara membuat Shotwell membuat ulang semua thumbnail?


15

Untuk beberapa alasan yang tidak diketahui, semua thumbnail hilang di Shotwell saya, sebaliknya semua ikon berwarna abu-abu. Gambarnya sendiri baik-baik saja dan saya bisa membukanya di Shotwell.

Hanya ada folder kosong di .shotwell/thumbs/dalamnya sehingga sepertinya thumbnail tidak dibuat sama sekali.

Saya juga telah mencoba menginstal ulang Shotwell (dengan membersihkannya terlebih dahulu) tanpa perubahan apa pun.

Bagaimana cara membuat Shotwell membuat ulang semua thumbnail?

Jawaban:


14

Skrip shell ini akan membuat ulang thumbnail Anda dengan ukuran 128px dan 360px sehingga Anda akan melihat setidaknya sesuatu di viewer.

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

Jika foto Anda memiliki thumbnail exif maka Anda dapat mengganti baris konversi dengan ini:tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
lkp

Masalah dengan solusi ini adalah bahwa setiap transformasi yang dilakukan pengguna ke foto - rotasi, potong, koreksi warna - tidak akan tercermin dalam thumbnail. Shotwell menyimpan semua thumbnail yang diubah sepenuhnya.
Jim Nelson

Script ini mengasumsikan Anda berada di bagian atas direktori home Anda, tetapi sebaliknya berfungsi seperti mantra. Terima kasih!
Reece

bitbucket.org/reece/reece-base/src/tip/bin/... builds juga menciptakan jempol 360x360.
Reece

Saat ini, Anda juga dapat hanya menghapus ~/.cache/shotwell/thumbs, dan Shotwell 0.22.x akan membuat ulang mereka sesuai kebutuhan.
Lambart

7

Cara mudah bagi Shotwell untuk membuat ulang thumbnail (ini solusinya):

  1. Buka halaman Foto Anda.
  2. Edit -> Pilih Semua
  3. Ctrl+ R(putar)
  4. Setelah selesai berputar, Ctrl+ Z(batalkan).

Ini akan memaksa Shotwell untuk membuat ulang semua foto dan menghargai segala transformasi yang telah disimpannya.

Seperti disebutkan oleh phq, ada bug yang luar biasa untuk memperbaikinya sehingga Anda tidak perlu solusi ini. Sampai saat itu, ini adalah cara yang disarankan untuk menyelesaikan masalah ini. Skrip yang diposting di atas tidak akan menghargai transformasi, artinya thumbnail Anda mungkin tidak terlihat seperti foto Anda di Shotwell.


Hanya catatan samping karena masih sama di Shotwell 0.13.1 - flip horisontal tampaknya menjadi transformasi yang sedikit lebih cepat (diuji pada 1500 foto 8mpix).
cprn

5

Saya hanya menggunakan skrip shell yang diberikan dalam jawaban ini , tetapi saya memiliki sekitar 22000 thumbnail untuk dihasilkan.

Jadi di sini adalah versi bash dari skrip ini, menggunakan ~/.shotwellalih-alih ~/.local/shotwell(yang merupakan milik saya) dan menggunakan sebanyak core yang dimiliki prosesor saya (8 kali lebih cepat dalam kasus saya!):

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

Perbarui Dengan shotwell 0,18 thumbnail sekarang dihasilkan ketika dilihat secara manual.

Jangan hapus .shotwell / jempol!

Menurut bug ini di launchpad, thumbnail hanya dihasilkan saat impor.

Thumbnail hanya dihasilkan saat impor. Jika thumbnail dihapus dari disk, mereka tidak dibuat ulang.


Dengan Shotwell 0.22 (yaitu, Ubuntu 16.04) Anda cukup menghapus ~ / .cache / shotwell / thumbs, dan Shotwell akan membuat ulang sesuai kebutuhan.
Lambart

3

Shotwell versi 0.13.11 di Ubuntu 12.10 Thumbnail tampaknya tidak lagi terletak di .shotwell / jempol tetapi sekarang di .cache / shotwell Anda dapat memeriksa pengguna memiliki rigths penuh untuk membaca jempol. Memiliki akses ke gambar tetapi tidak dengan ibu jari dapat menyebabkan ibu jari abu-abu.


Anda belum menjawab pertanyaan tentang regenerasi ibu jari.
hultqvist

1
@ php jika Anda sudah membaca pertanyaan, Anda akan melihat bahwa pertanyaannya tidak harus benar-benar meregenerasi thubs , tetapi bagaimana mendapatkan kembali jempol yang OP berhipotesis jempol tidak ada, dan dengan demikian mengusulkan regenerasi sebagai perbaikan. Seandainya ibu jari itu benar-benar ada, tetapi di folder yang berbeda atau dengan izin yang salah, jawaban ini sebenarnya tepat. Selain itu, bahkan jika Anda hanya akan menerima jawaban yang dengan bodohnya hanya berurusan dengan subjek pertanyaan, harap diingat bahwa jawaban ini masih berguna sebagai komentar (bahwa phq tidak akan mampu ..
berdario

... poskan sebagai komentar yang benar, karena skor reputasinya yang rendah)
berdario

2

Shotwell 0.28.4 (Braunschweig) terkadang tidak akan membuat gambar mini video. Script berikut yang berasal dari jawaban yang diterima memperbaiki ini:

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

Untuk versi 0.26.3 (terbaru pada November 2017), dengan Shotwell ditutup, hapus saja thumbnail di

  • / home / user_name /.cache/shotwell/thumbs/thumbs128 dan di
  • / home / user_name /.cache/shotwell/thumbs/thumbs360

dan jalankan Shotwell, lagi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.