Làm cách nào để tạo Shotwell tái tạo tất cả các hình thu nhỏ?


15

Vì một số lý do không xác định, tất cả các hình thu nhỏ bị mất trong Shotwell của tôi, thay vào đó tất cả các biểu tượng đều có màu xám. Bản thân các hình ảnh đều ổn và tôi có thể mở tất cả trong Shotwell.

Chỉ có các thư mục trống .shotwell/thumbs/để có vẻ như các hình thu nhỏ hoàn toàn không được tạo.

Tôi cũng đã cố gắng cài đặt lại Shotwell (bằng cách lọc nó trước) mà không có bất kỳ thay đổi nào.

Làm cách nào để tạo Shotwell tái tạo tất cả các hình thu nhỏ?

Câu trả lời:


14

Kịch bản shell này sẽ tạo lại hình thu nhỏ của bạn có kích thước 128px và 360px để bạn sẽ thấy ít nhất một cái gì đó trong trình xem.

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

Nếu các bức ảnh của bạn có hình thu nhỏ exif thì bạn có thể thay thế dòng chuyển đổi bằng dòng này:tf_src="$(exiv2 -vf -et "$filename" | grep -o "to file .*" | cut -f3- -d" ")" && mv "$tf_src" $tf
lkp

Vấn đề với giải pháp này là bất kỳ biến đổi nào mà người dùng đã thực hiện đối với ảnh - xoay, cắt, chỉnh màu - sẽ không được phản ánh trong các hình thu nhỏ. Shotwell lưu trữ tất cả các hình thu nhỏ được chuyển đổi hoàn toàn.
Jim

Kịch bản này giả định rằng bạn đang ở đầu thư mục chính của bạn, nhưng nếu không thì hoạt động như một lá bùa. Cảm ơn!
Reece

bitbucket.org/reece/reece-base/src/tip/bin/ các bản dựng cũng tạo ra các ngón tay cái 360x360.
Reece

Ngày nay, bạn cũng có thể xóa ~/.cache/shotwell/thumbsvà Shotwell 0.22.x sẽ tạo lại chúng khi cần.
Lambart

7

Một cách dễ dàng để Shotwell tạo lại hình thu nhỏ (đây là cách giải quyết):

  1. Chuyển đến trang Ảnh của bạn.
  2. Chỉnh sửa -> Chọn tất cả
  3. Ctrl+ R(xoay)
  4. Khi quay xong, Ctrl+ Z(hoàn tác).

Điều này sẽ buộc Shotwell tạo lại tất cả các bức ảnh và tôn vinh mọi biến đổi mà nó đã lưu trữ cho chúng.

Như phq đã đề cập, có một lỗi nổi bật để khắc phục điều này vì vậy bạn sẽ không cần cách giải quyết này. Cho đến lúc đó, đây là cách được đề nghị để giải quyết vấn đề này. Kịch bản được đăng ở trên sẽ không tôn trọng các biến đổi, có nghĩa là hình thu nhỏ của bạn không giống với ảnh của bạn trong Shotwell.


Chỉ là một ghi chú bên lề vì nó vẫn giống như trong Shotwell 0.13.1 - lật ngang dường như biến đổi nhanh hơn một chút (được thử nghiệm trên 1500 ảnh 8mpix).
cprn

5

Tôi chỉ sử dụng tập lệnh shell được đưa ra trong câu trả lời này , nhưng tôi có khoảng 22000 hình thu nhỏ để tạo.

Vì vậy, đây là phiên bản bash của tập lệnh này, sử dụng ~/.shotwellthay vì ~/.local/shotwell(đó là những gì tôi có) và sử dụng nhiều lõi như bộ xử lý của tôi có (nhanh hơn 8 lần trong trường hợp của tôi!):

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

Cập nhật Với shotwell 0.18 hình thu nhỏ hiện được tạo khi xem thủ công.

Đừng xóa .shotwell / ngón tay cái!

Theo lỗi này trong launchpad, hình thu nhỏ chỉ được tạo khi nhập.

Hình thu nhỏ chỉ được tạo khi nhập. Nếu hình thu nhỏ được xóa khỏi đĩa, chúng không được tạo lại.


Với Shotwell 0.22 (tức là Ubuntu 16.04), bạn có thể xóa ~ / .cache / shotwell / ngón tay cái và Shotwell sẽ tạo lại chúng khi cần.
Lambart

3

Shotwell phiên bản 0.13.11 trên Ubuntu 12.10 Hình thu nhỏ dường như không còn tồn tại trong .shotwell / ngón tay cái nhưng bây giờ trong .cache / shotwell Bạn có thể kiểm tra người dùng có đủ độ cứng để đọc ngón tay cái. Có quyền truy cập vào hình ảnh nhưng không đến ngón tay cái có thể gây ra ngón tay cái màu xám.


Bạn đã không giải quyết câu hỏi về tái tạo ngón tay cái.
hultqvist

1
@phq nếu bạn đã đọc câu hỏi, bạn sẽ thấy rằng câu hỏi không nhất thiết phải thực sự tái tạo lại các cây , nhưng làm thế nào để lấy lại ngón tay cái mà OP giả định là thiếu ngón tay cái, và do đó đề xuất tái sinh như một sửa chữa. Trong trường hợp ngón tay cái thực sự ở đó, nhưng trong một thư mục khác hoặc với sự cho phép sai, câu trả lời này thực sự được đặt ra. Trên hết, ngay cả khi bạn chỉ chấp nhận câu trả lời dại dột chỉ liên quan đến chủ đề của câu hỏi, xin lưu ý rằng câu trả lời này vẫn hữu ích như một nhận xét (rằng phq sẽ không thể ..
berdario

... Đăng như một bình luận thực sự, do điểm danh tiếng thấp của anh ấy)
berdario

2

Shotwell 0.28.4 (Braunschweig) đôi khi sẽ không tạo hình thu nhỏ video. Kịch bản sau đây bắt nguồn từ câu trả lời được chấp nhận sửa lỗi này:

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

Đối với phiên bản 0.26.3 (cập nhật kể từ tháng 11 năm 2017), với Shotwell đã đóng, chỉ cần xóa các hình thu nhỏ trong

  • / home / user_name /.cache/shotwell/thumbs/thumbs128 và trong
  • / home / user_name /.cache/shotwell/thumbs/thumbs360

và bắn Shotwell, một lần nữa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.