Shotwell'in tüm küçük resimleri yeniden oluşturmasını nasıl sağlayabilirim?


15

Bilinmeyen bir nedenden dolayı tüm küçük resimler Shotwell'imde kayboluyor, bunun yerine tüm simgeler gri. Görüntülerin hepsi iyi ve hepsini Shotwell'de açabiliyorum.

Yalnızca boş klasörler var, .shotwell/thumbs/bu yüzden küçük resimler hiç oluşturulmuyor gibi görünüyor.

Ayrıca Shotwell'i (ilk önce temizleyerek) herhangi bir değişiklik yapmadan yeniden kurmaya çalıştım.

Shotwell'in tüm küçük resimleri yeniden oluşturmasını nasıl sağlayabilirim?

Yanıtlar:


14

Bu kabuk betiği 128px ve 360px boyutlarındaki küçük resimlerinizi yeniden oluşturacak, böylece görüntüleyicide en az bir şey göreceksiniz.

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

Eğer resimleriniz küçük resimlere sahipse, dönüşüm çizgisini bununla değiştirebilirsiniz:tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
lkp

Bu çözümün sorunu, kullanıcının fotoğraflarda yaptığı herhangi bir dönüşümün (döndürme, kırpma, renk düzeltme) küçük resimlere yansıtılmamasıdır. Shotwell, tüm küçük resimleri tamamen dönüştürülmüş olarak saklar.
Jim Nelson

Bu komut dosyası, ana dizininizin en üstünde olduğunuz varsayılır, ancak aksi halde bir cazibe gibi çalışır. Teşekkürler!
Reece

bitbucket.org/reece/reece-base/src/tip/bin/... da 360x360 başparmak oluşturur yapýlar.
Reece

Günümüzde, sadece silebilirsiniz ~/.cache/shotwell/thumbsve Shotwell 0.22.x bunları gerektiği gibi yeniden oluşturacaktır.
Lambart

7

Shotwell'in küçük resimleri yeniden oluşturmasının kolay bir yolu (bu bir çözümdür):

  1. Fotoğraflar sayfanıza gidin.
  2. Düzenle -> Tümünü Seç
  3. Ctrl+ R(döndür)
  4. Döndürme bittiğinde Ctrl+ Z(geri al).

Bu, Shotwell'i tüm fotoğrafları yenilemeye ve onlar için sakladığı dönüşümleri onurlandırmaya zorlayacaktır.

Belirtildiği gibi phq, bu düzeltmek için olağanüstü bir hata var, bu yüzden bu geçici çözüm gerekmez. O zamana kadar, bu sorunu çözmenin önerilen yolu budur. Komut yukarıda olacak yayınlanmıştır değil küçük resimleriniz Kadıköy'de fotoğraflarınızla benzememek için mümkün olduğu anlamına onur dönüşümleri.


Shotwell 0.13.1'de hala aynı olan bir yan not - yatay çevirme biraz daha hızlı bir dönüşüm gibi görünüyor (1500 8mpix fotoğraflarda test edildi).
cprn

5

Bu cevapta verilen kabuk betiğini kullandım , ancak oluşturmak için yaklaşık 22000 küçük resim var.

Yani, bu komut dosyasının bash sürümü, ~/.shotwellyerine ~/.local/shotwell(sahip olduğum şey) yerine ve işlemcimin sahip olduğu kadar çok çekirdeği kullanarak (benim durumumda 8 kat daha hızlı!):

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

Güncelleme Shotwell ile artık manuel olarak görüntülendiğinde 0.18 küçük resim üretiliyor.

.Shotwell / thumbs kaldırmayın!

Launchpad'deki bu hataya göre , küçük resimler yalnızca içe aktarma sırasında oluşturulur.

Küçük resimler yalnızca içe aktarma sırasında oluşturulur. Küçük resimler diskten kaldırılırsa yeniden oluşturulmaz.


(Yani Ubuntu 16.04) Kadıköy'de 0,22 ile sadece ~ / .cache / Shotwell / başparmak silebilir ve Shotwell olacak bunları gerektiği gibi yeniden.
Lambart

3

Ubuntu 12.10'da Shotwell 0.13.11 sürümü. Küçük resimler .shotwell / thumbs'te bulunmayacak kadar küçük görünüyor ama şimdi .cache / shotwell'de Kullanıcıların başparmaklarını okumak için tam bir sağlamlığı olduğunu kontrol edebilirsiniz. Resimlere erişimin olması ancak başparmaklara basılmaması gri başparmaklara neden olabilir.


Başparmakları yenilemeyle ilgili soruyu ele almadınız.
hultqvist

1
@phq soruyu okuduysanız, sorunun mutlaka thub'ları gerçekten yenilemek değil , OP'nin başparmakları hipotize ettiği başparmakları nasıl geri alacağınızı ve böylece rejenerasyonun nasıl önerileceğini göreceksiniz . bir düzeltme. Başparmakların aslında orada olması, ancak farklı bir klasörde veya yanlış izinle olması durumunda, bu cevap aslında açıktır. Bunun da ötesinde, yalnızca sorunun konusu ile aptalca ilgilenen cevapları kabul etseniz bile, lütfen bu cevabın hala bir yorum olarak yararlı olduğunu unutmayın (bu phq yapamazdı ..
berdario

... düşük itibar puanı nedeniyle gerçek bir yorum olarak gönder)
berdario

2

Shotwell 0.28.4 (Braunschweig) bazen video küçük resimleri oluşturmaz. Kabul edilen yanıttan türetilen aşağıdaki komut dosyası bunu düzeltir:

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

Sürüm 0.26.3 (Kasım 2017 itibariyle güncel) için Shotwell kapalıyken,

  • / home / kullanıcı_adı /.cache/shotwell/thumbs/thumbs128 ve
  • / home / kullanıcı_adı /.cache/shotwell/thumbs/thumbs360

ve Shotwell'i tekrar ateşleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.