web-dev-qa-db-ja.com

大きなサムネイルの独立して閲覧可能なデータベース?

私はしばらくの間これについてグーグルで検索しましたが、役に立ちませんでした。大量の写真をいくつかのメディアに保存し、クラウドにバックアップしています。 Shotwellはかなり大きなサムネイルを生成します。これは、写真の被写体と品質の両方を把握するのに非常に適しています。サムネイルは、タイムスタンプと元のフォルダに基づいてグループに編成されています。プログラムが実際の写真の完全なコレクションにアクセスできない場合でも、サムネイルの完全なコレクションを閲覧できるようにしたいと思います(実際、私は写真の完全なコレクションを持っていません単一のストレージデバイス)。これはいくつかの理由で私にとって非常に便利です。異なる名前のホームフォルダを持つ複数のPCからそれらを参照したり、保存場所などに応じてタグを付けたりすることができました。サムネイルのコレクション全体が適度に軽く、rsyncで簡単に更新できました。ただし、Shotwellが実際の写真を見つけられない場合は、欠落している写真の見出しの下に対応する親指が自動的に移動し、その構造が失われます。

親指をShotwellに直接インポートしようとしましたが、元のタイムスタンプとタグがなくなっています。可能な方法は、タイムスタンプに基づいてサムネイル生成とフォルダ構造生成のプロセスを自動化することですが、それに巻き込まれる前に、ここで質問したほうがいいと思いました。オリジナルにアクセスせずにサムネイルの(膨大な)コレクションを閲覧できるようにするためのトリックや微調整を知っていますか?または特定のプログラムをお勧めしますか?この種のプログラムはどこかで使われているに違いないと思いますが、先ほど言ったように、何も見つかりませんでした。ありがとう!

3
archie

F-Spotは画像検索に適したツールですが、Shotと同じかもしれません。

私は通常のUbuntuディストリビューションと一緒にUbuntuStudioと呼ばれるUbuntuのバージョンを持っています。

Ubuntu Studioを使用すると、Ubuntuを優れたOSにする理由を忘れることなく、画像、サウンド、およびビデオプログラムのカタログを改善できます。

そのオプションを調べてください-UbuntuとUbuntuStudioのデュアルブート(Ubuntu StudioをVirtualBoxにインストールするか、Live-CDを介してインストールする前に試してみる場合を除く)。

びっくりするかもしれません。

スティーブ

0
Steven Burwood

わかりました。サムネイルデータベースを生成するスクリプトで問題を解決しました。スクリプトを実行するには、ImageMagickをインストールする必要があります。スクリプトには、ソース写真パスとターゲットパスを指定する2つの引数が必要です。 SourceでJPGファイルを再帰的に検索し、ユーザー定義の幅と品質で正しい向きのサムネイルを生成します(必要に応じて、JPGを別のものに変更するだけです。IMで処理されるすべてのファイル形式を処理します)。 2つのサムネイルデータベースを生成します。

(1)ターゲットのdb:サムネイルは元のEXIF日付に基づいてYYYY/MM/DDフォルダー構造に配置されます。

(2)Target.Mirrorのdb:つまみは、ソースの構造を正確に反映するフォルダー構造に編成されています。

スクリプトを簡単に変更して、1つのデータベースを生成できます。ここにスクリプトのコアのみを貼り付け、パスのチェックと操作、引数の処理、エコーメッセージ、コメントなどを省略します。ソース、ターゲット、ミラーのパスには末尾に「/」を付ける必要があります。

#!/bin/bash
# The following variables have to be initialized
# Source=<path_to_source/>
# Target=<path_to_target/>
# Mirror=<Target.mirror/>
# Width=<Thumbnail width> (experiment with 368, 416, 512, 1024)
# Quality=<Thumbnail quality> (0% to 100%: 95% is fine, try 75%)

   shopt -s globstar
   cd "$Source"
   for f in **
   do
      if ! ([[ -d "$f" ]]) && ([[ "$f" == *"JPG" ]] || [[ "$f" == *"jpg" ]])
      then
        echo -e "           ${\e[0;32m}" $Source$f${\e[0m}
        Date=$(identify -format "%[EXIF:DateTimeOriginal]" $f)
        FolderName="$Target${Date:0:4}/${Date:5:2}/${Date:8:2}"                     
        if ! [[ -d $FolderName ]]
        then
          mkdir -p "$FolderName"
        fi
        Filename="${f##*/}"
        convert "$Source$f" -thumbnail $Width -quality $Quality -auto-orient \
        "$FolderName/$Filename"
 # to preserve profiles such as EXIF data, replace line above with the following:
 #
 # convert "$Source$f" -resize $Width -quality $Quality -auto-orient
 # "$FolderName/$Filename"
 #
 # it takes a bit longer and thumbnails are bigger in size -- profiles use up
 # to 60K
        if ! [[ "${f%/*}" == "$f" ]]
        then
          if ! [[ -d "$Mirror""${f%/*}" ]]
          then
            mkdir -p "$Mirror${f%/*}"
          fi
        fi
        cp "$FolderName/$Filename" "$Mirror$f"
      fi
   done

データベースは非常に軽量です(幅が416に設定され、品質が95%の場合、データベースのサイズは元のサイズの約1%です)。そのコピーは、ノートブックまたはAndroid電話で、Shotwellが非常に高速に参照します。スクリプトを新しいソースで(ただし、同じターゲットとミラーで)再度実行した場合)に簡単に保存できます。既存のデータベースが更新されます。何と言えばいいですか?GnuとLinuxに感謝します!

1
archie