Shotwell에서 모든 축소판을 재생성하려면 어떻게합니까?


15

알 수없는 이유로 내 Shotwell에서 모든 축소판이 손실되고 대신 모든 아이콘이 회색으로 표시됩니다. 이미지 자체는 모두 괜찮으며 Shotwell에서 모두 열 수 있습니다.

빈 폴더 만 .shotwell/thumbs/있으므로 축소판이 전혀 생성되지 않는 것처럼 보입니다.

또한 변경없이 Shotwell을 다시 설치하려고 시도했습니다 (먼저 제거).

Shotwell에서 모든 축소판을 재생성하려면 어떻게합니까?

답변:


14

이 셸 스크립트는 128px 및 360px 크기의 썸네일을 재생성하여 최소한 뷰어에서 무언가를 볼 수 있습니다.

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

사진에 exif 썸네일이있는 경우 변환 라인을 다음과 같이 바꿀 수 있습니다.tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
lkp

이 솔루션의 문제점은 사용자가 회전, 자르기, 색상 보정과 같은 사진을 변형하면 축소판에 반영되지 않는다는 것입니다. Shotwell은 모든 축소판을 완전히 변형하여 저장합니다.
Jim Nelson

이 스크립트는 사용자가 홈 디렉토리의 최상위에 있다고 가정하지만 매력처럼 작동합니다. 감사!
Reece

bitbucket.org/reece/reece-base/src/tip/bin/… 빌드는 360x360 썸도 생성합니다.
Reece

요즘에는을 삭제할 수도 ~/.cache/shotwell/thumbs있으며 Shotwell 0.22.x는 필요에 따라 재생성합니다.
Lambart

7

Shotwell이 축소판을 재생성하는 쉬운 방법 (해결 방법) :

  1. 사진 페이지로 이동하십시오.
  2. 편집 -> 모두 선택
  3. Ctrl+ R(회전)
  4. 회전이 끝나면 Ctrl+ Z(실행 취소).

이렇게하면 Shotwell이 모든 사진을 재생성하고 저장 한 모든 변형을 존중하게됩니다.

phq가 언급 했듯이이 문제를 해결하기위한 뛰어난 버그가 있으므로이 해결 방법이 필요하지 않습니다. 그때까지이 문제를 해결하기 위해 권장되는 방법입니다. 위에 게시 된 스크립트는 변환 을 따르지 않습니다 . 즉, 미리보기 이미지가 Shotwell의 사진처럼 보이지 않을 수 있습니다.


Shotwell 0.13.1에서 여전히 동일하기 때문에 참고로 수평 플립은 조금 더 빠른 변형 인 것 같습니다 (1500 8mpix 사진에서 테스트 됨).
cprn

5

방금 이 답변에 제공된 쉘 스크립트를 사용 했지만 약 22000 개의 축소판이 생성됩니다.

그래서 여기에이 스크립트의 bash 버전이 있습니다 (내가 가진 것) ~/.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

Shotwell으로 업데이트 이제 수동으로 볼 때 0.18 축소판이 생성됩니다.

.shotwell / thumbs를 제거하지 마십시오!

런치 패드 의이 버그 에 따르면 , 썸네일은 가져올 때만 생성됩니다.

축소판은 가져올 때만 생성됩니다. 섬네일이 디스크에서 제거되면 재생성되지 않습니다.


Shotwell 0.22 (즉, Ubuntu 16.04)를 사용하면 ~ / .cache / shotwell / thumbs 만 삭제하면 Shotwell 필요에 따라 재생성합니다.
Lambart

3

Ubuntu 12.10의 Shotwell 버전 0.13.11 썸네일은 .shotwell / thumbs에 있지만 .cache / shotwell에는 더 이상 보이지 않는 것으로 보입니다. 사진에 액세스 할 수 있지만 엄지 손가락에는 액세스 할 수 없으면 회색 엄지 손가락이 발생할 수 있습니다.


엄지 손가락 재생성에 대한 질문을 처리하지 않았습니다.
hultqvist

1
@phq 질문을 읽으면 질문이 실제로 thub를 재생성하는 것이 아니라 OP가 엄지 손가락을 가설 화하는 가설을 다시 얻는 방법을 알 수 있습니다. 수정. 엄지 손가락이 실제로 있지만 다른 폴더에 있거나 잘못된 권한이있는 경우이 답변이 실제로 표시됩니다. 또한, 문제의 주제만을 어리석게 다루는 답변 만 수락하더라도이 답변은 여전히 ​​주석으로 유용하다는 점을 명심하십시오 (phq는 할 수 없었습니다 ..
berdario

... 그의 낮은 평판 점수로 인해 진정한 의견으로 게시)
berdario

2

Shotwell 0.28.4 (Braunschweig)는 때때로 비디오 썸네일을 생성하지 않습니다. 허용되는 답변에서 파생 된 다음 스크립트가이를 해결합니다.

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

Shotwell이 닫힌 상태에서 버전 0.26.3 (2017 년 11 월 현재 최신)의 경우 축소판 그림을 삭제하십시오.

  • / home / user_name /.cache/shotwell/thumbs/thumbs128 및
  • / home / user_name /.cache/shotwell/thumbs/thumbs360

Shotwell을 다시 시작하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.