Як змусити Shotwell відновити всі ескізи?


15

З якоїсь незрозумілої причини всі ескізи губляться в моєму Shotwell, натомість усі піктограми сірі. З самими зображеннями все гаразд, і я можу відкрити їх усі в Shotwell.

У ньому є лише порожні папки, .shotwell/thumbs/тому схоже, що ескізи взагалі не генеруються.

Я також намагався повторно встановити Shotwell (попередньо очистивши його) без будь-яких змін.

Як змусити Shotwell відновити всі ескізи?

Відповіді:


14

Цей сценарій оболонки відновить ваші мініатюри розмірів 128 пікселів і 360 пікселів, щоб ви побачили принаймні щось у глядачі.

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

Якщо у ваших фото є ескізи ескізів, то ви можете замінити рядок перетворення таким:tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
lkp

Проблема цього рішення полягає в тому, що будь-які перетворення, зроблені користувачем на фотографіях - поворот, обрізка, корекція кольору - не будуть відображені в ескізах. Shotwell зберігає всі ескізи, повністю трансформовані.
Джим Нельсон

Цей сценарій передбачає, що ви знаходитесь вгорі домашнього каталогу, але в іншому випадку працює як шарм. Спасибі!
Різ

bitbucket.org/reece/reece-base/src/tip/bin/… складає також створює великі пальці 360x360.
Різ

Сьогодні ви також можете просто видалити ~/.cache/shotwell/thumbs, і Shotwell 0.22.x відновить їх за потребою.
Ламбарт

7

Простий спосіб для Shotwell відновити ескізи (це вирішення):

  1. Перейдіть на сторінку "Фотографії".
  2. Редагувати -> Вибрати все
  3. Ctrl+ R(обертати)
  4. Завершивши обертання, Ctrl+ Z(скасувати).

Це змусить Shotwell регенерувати всі фотографії та шанувати будь-які трансформації, які він зберігав для них.

Як зазначалося в phq, існує виправна помилка, щоб виправити це, тож вам не знадобиться цей спосіб вирішення. До цього часу це рекомендований спосіб вирішення цієї проблеми. Сценарій, розміщений вище, не буде вшановувати трансформації, тобто ваші ескізи можуть не виглядати як ваші фотографії в Shotwell.


Лише бічна нота, оскільки це все одно те саме у Shotwell 0.13.1 - горизонтальний фліп, здається, трохи швидше перетворення (протестовано на 1500 фотографіях 8 мільйпікс.).
cprn

5

Я просто використав сценарій оболонки, наведений у цій відповіді , але у мене є близько 22000 ескізів.

Отже, ось баш-версія цього сценарію, використовуючи ~/.shotwellзамість ~/.local/shotwell(що у мене є) та використовуючи стільки ядер, скільки мій процесор (у моєму випадку в 8 разів швидше!):

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

Оновлення З обробкою кадрів 0,18 ескізів створюються при перегляді вручну.

Не видаляйте .shotwell / великі пальці!

Відповідно до цієї помилки в панелі запуску, ескізи генеруються лише при імпорті.

Ескізи генеруються лише при імпорті. Якщо ескізи видалені з диска, вони не відновлюються.


З Shotwell 0,22 (тобто Ubuntu 16,04) , ви можете просто видалити ~ / .cache / Шотуелл / великі пальці, і Shotwell будуть відновлювати їх по мірі необхідності.
Ламбарт

3

Версія Shotwell 0.13.11 на Ubuntu 12.10 Ескізи здаються не розміщеними в .shotwell / thumbs, але зараз у .cache / shotwell Ви можете перевірити, чи є у користувача повне обчислення для читання великих пальців. Доступ до зображень, але не до великих пальців може призвести до появи сірих пальців.


Ви не вирішили питання про регенерацію великих пальців.
hultqvist

1
@phq, якби ви прочитали питання, ви побачили, що питання не обов'язково регенерувати великі пальці , а як повернути великі пальці, для яких ОП гіпотезує великі пальці, і, таким чином, пропонуйте регенерацію як виправлення. У випадку, якщо великі пальці насправді є, але в іншій папці або з неправильним дозволом, ця відповідь насправді помічена. На додаток, навіть якщо ви приймаєте лише відповіді, які нерозумно стосуються лише теми питання, майте на увазі, що ця відповідь все ще корисна як коментар (цей phq не зміг би зробити ..
berdario

... повідомлення як справжній коментар, через його низьку оцінку репутації)
berdario

2

Shotwell 0.28.4 (Брауншвейг) іноді не створює ескізів відео. Наступний сценарій, отриманий із прийнятої відповіді, виправляє це:

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

Для версії 0.26.3 (оновлена ​​станом на листопад 2017 року) із закритим Shotwell просто видаліть мініатюри в

  • / home / user_name /.cache/shotwell/thumbs/thumbs128 та в
  • / home / user_name /.cache/shotwell/thumbs/thumbs360

і знову підпалити Shotwell.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.