Linux中國

數碼文件與文件夾收納術(以照片為例)

  • 更新 2014-05-14:增加了一些具體實例
  • 更新 2015-03-16:根據照片的 GPS 坐標過濾圖片
  • 更新 2016-08-29:以新的 filetags --filter 替換已經過時的 show-sel.sh 腳本
  • 更新 2017-08-28: geeqier 視頻縮略圖的郵件評論
  • 更新 2018-03-06:增加了 Julian Kahnert 的鏈接
  • 更新 2018-05-06:增加了作者在 2018 Linuxtage Graz 大會上 45 分鐘演講的視頻
  • 更新 2018-06-05:關於 metadata 的郵件回復
  • 更新 2018-07-22:移動文件夾結構的解釋到一篇它自己的文章中
  • 更新 2019-07-09:關於在文件名中避免使用系譜和字元的郵件回復

每當度假或去哪遊玩時我就會化身為一個富有激情的攝影師。所以,過去的幾年中我積累了許多的 JPEG 文件。這篇文章中我會介紹我是如何避免 供應商鎖定(LCTT 譯註: 供應商鎖定 vendor lock-in ,原為經濟學術語,這裡引申為避免過於依賴某一服務平台)造成受限於那些臨時性的解決方案及數據丟失。相反,我更傾向於使用那些可以讓我投入時間和精力打理,並能長久使用的解決方案。

這一(相當長的)攻略 並不僅僅適用於圖像文件:我將進一步闡述像是文件夾結構、文件的命名規則等等許多領域的事情。因此,這些規範適用於我所能接觸到的所有類型的文件。

在我開始傳授我的方法之前,我們應該先就我將要介紹方法的達成一個共識,那就是我們是否有相同的需求。如果你對 raw 圖像格式十分推崇,將照片存儲在雲端或其他你信賴的地方(對我而言可能不會),那麼你可能不會認同這篇文章將要描述的方式了。請根據你的情況來靈活做出選擇。

我的需求

對於 將照片(或視頻)從我的數碼相機中導出到電腦里,我只需要將 SD 卡插到我的電腦里並調用 fetch-workflow 軟體。這一步也完成了圖像軟體的預處理以適用於我的文件命名規範(下文會具體論述),同時也可以將圖片旋轉至正常的方向(而不是橫著)。

這些文件將會被存入到我的攝影收藏文件夾 $HOME/tmp/digicam/。在這一文件夾中我希望能遍歷我的圖像和視頻文件,以便於整理/刪除、重命名、添加/移除標籤,以及將一系列相關的文件移動到相應的文件夾中

在完成這些以後,我將會瀏覽包含圖像/電影文件集的文件夾。在極少數情況下,我希望在獨立的圖像處理工具(比如 GIMP)中打開一個圖像文件。如果僅是為了旋轉 JPEG 文件,我想找到一個快速的方法,不需要圖像處理工具,並且是以無損的方式旋轉 JPEG 圖像。

我的數碼相機支持用 GPS 坐標標記圖像。因此,我需要一個方法來對單個文件或一組文件可視化 GPS 坐標來顯示我走過的路徑。

我想擁有的另一個好功能是:假設你在威尼斯度假時拍了幾百張照片。每一個都很漂亮,所以你每張都捨不得刪除。另一方面,你可能想把一組更少的照片送給家裡的朋友。而且,在他們嫉妒的爆炸之前,他們可能只希望看到 20 多張照片。因此,我希望能夠定義並顯示一組特定的照片子集

就獨立性和避免鎖定效應而言,我不想使用那種一旦公司停止產品或服務就無法使用的工具。出於同樣的原因,由於我是一個注重隱私的人,我不想使用任何基於雲的服務。為了讓自己對新的可能性保持開放的心態,我不希望只在一個特定的操作系統平台才可行的方案上傾注全部的精力。基本的東西必須在任何平台上可用(查看、導航、……),而全套需求必須可以在 GNU/Linux 上運行,對我而言,我選擇 Debian GNU/Linux。

在我傳授當前針對上述大量需求的解決方案之前,我必須解釋一下我的一般文件夾結構和文件命名約定,我也使用它來命名數碼照片。但首先,你必須認清一個重要的事實:

iPhoto、Picasa,諸如此類應被認為是有害的

管理照片集的軟體工具確實提供了相當酷的功能。它們提供了一個良好的用戶界面,並試圖為你提供滿足各種需求的舒適的工作流程。

對它們我確實遇到了很多大問題。它們幾乎對所有東西都使用專有的存儲格式:圖像文件、元數據等等。當你打算在幾年內換一個不同的軟體,這是一個大問題。相信我:總有一天你會因為多種原因而更換軟體

如果你現在正打算更換相應的工具,你會意識到 iPhoto 或 Picasa 是分別存儲原始圖像文件和你對它們所做的所有操作的(旋轉圖像、向圖像文件添加描述/標籤、裁剪等等)。如果你不能導出並重新導入到新工具,那麼所有的東西都將永遠丟失。而無損的進行轉換和遷移幾乎是不可能的。

我不想在一個會鎖住我工作的工具上投入任何精力。我也拒絕把自己綁定在任何專有工具上。我是一個過來人,希望你們吸取我的經驗。

這就是我在文件名中保留時間戳、圖像描述或標記的原因。文件名是永久性的,除非我手動更改它們。當我把照片備份或複製到 U 盤或其他操作系統時,它們不會丟失。每個人都能讀懂。任何未來的系統都能夠處理它們。

我的文件命名規範

這裡有一個我在 2018 Linuxtage Graz 大會上做的演講,其中詳細闡述了我的在本文中提到的想法和工作流程。

我所有的文件都與一個特定的日期或時間有關,根據所採用的 ISO 8601 規範,我採用的是日期戳時間戳

帶有日期戳和兩個標籤的示例文件名:2014-05-09 Budget export for project 42 -- finance company.csv

帶有時間戳(甚至包括可選秒)和兩個標籤的示例文件名:2014-05-09T22.19.58 Susan presenting her new shoes -- family clothing.jpg

由於我使用的 ISO 時間戳冒號不適用於 Windows NTFS 文件系統,因此,我用點代替冒號,以便將小時與分鐘(以及可選的秒)區別開來。

如果是持續的一段日期或時間,我會將兩個日期戳或時間戳用兩個減號分開:2014-05-09--2014-05-13 Jazz festival Graz -- folder tourism music.pdf

文件名中的時間/日期戳的優點是,除非我手動更改它們,否則它們保持不變。當通過某些不處理這些元數據的軟體進行處理時,包含在文件內容本身中的元數據(如 Exif)往往會丟失。此外,使用這樣的日期/時間戳開始的文件名可以確保文件按時間順序顯示,而不是按字母順序顯示。字母表是一種完全人工的排序順序,對於用戶定位文件通常不太實用。

當我想將標籤關聯到文件名時,我將它們放在原始文件名和文件名擴展名之間,中間用空格、兩個減號和兩端額外的空格分隔 --。我的標籤是小寫的英文單詞,不包含空格或特殊字元。有時,我可能會使用 quantifiedselfusergenerated 這樣的連接詞。我傾向於選擇一般類別,而不是太過具體的描述標籤。我在 Twitter hashtags、文件名、文件夾名、書籤、諸如此類的博文等諸如此類地地方重用這些標籤。

標籤作為文件名的一部分有幾個優點。通過使用常用的桌面搜索引擎,你可以在標籤的幫助下定位文件。文件名稱中的標籤不會因為複製到不同的存儲介質上而丟失。當系統使用與文件名之外的存儲位置(如:元數據資料庫、點文件備用數據流等)存儲元信息通常會發生丟失。

當然,通常在文件和文件夾名稱中,請避免使用特殊字元、變音符、冒號等。尤其是在不同操作系統平台之間同步文件時。

我的文件夾名命名約定與文件的相應規範相同。

注意:由於 Memacsfilenametimestamp 模塊的聰明之處,所有帶有日期/時間戳的文件和文件夾都出現在我的 Org 模式的日曆(日程)上的同一天/同一時間。這樣,我就能很好地了解當天發生了什麼,包括我拍的所有照片。

我的一般文件夾結構

在本節中,我將描述我的主文件夾中最重要的文件夾。注意:這可能在將來的被移動到一個獨立的頁面。或許不是。讓我們等著瞧 🙂 (LCTT 譯註:後來這一節已被作者擴展並移動到另外一篇文章。)

很多東西只有在一定的時間內才會引起人們的興趣。這些內容包括快速瀏覽其內容的下載、解壓縮文件以檢查包含的文件、一些有趣的小內容等等。對於臨時的東西,我有 $HOME/tmp/ 子層次結構。新照片放在 $HOME/tmp/digicam/ 中。我從 CD、DVD 或 USB 記憶棒臨時複製的東西放在 $HOME/tmp/fromcd/ 中。每當軟體工具需要用戶文件夾層次結構中的臨時數據時,我就使用 $HOME/tmp/Tools/作為起點。我經常使用的文件夾是 $HOME/tmp/2del/2del 的意思是「隨時可以刪除」。例如,我所有的瀏覽器都使用這個文件夾作為默認的下載文件夾。如果我需要在機器上騰出空間,我首先查看這個 2del 文件夾,用於刪除內容。

與上面描述的臨時文件相比,我當然也想將文件保存更長的時間。這些文件被移動到我的 $HOME/archive/ 子層次結構中。它有幾個子文件夾用於備份、我想保留的 web 下載類、我要存檔的二進位文件、可移動媒體(CD、DVD、記憶棒、外部硬碟驅動器)的索引文件,和一個稍後(尋找一個合適的的目標文件夾)存檔的文件夾。有時,我太忙或沒有耐心的時候將文件妥善整理。是的,那就是我,我甚至有一個名為「現在不要煩我」的文件夾。這對你而言是否很怪?:-)

我的歸檔中最重要的子層次結構是 $HOME/archive/events_memories/ 及其子文件夾 2014/2013/2012/ 等等。正如你可能已經猜到的,每個年份有一個子文件夾。其中每個文件中都有單個文件和文件夾。這些文件是根據我在前一節中描述的文件名約定命名的。文件夾名稱以 ISO 8601 日期標籤 「YYYY-MM-DD」 開頭,後面跟著一個具有描述性的名稱,如 $HOME/archive/events_memories/2014/2014-05-08 Business marathon with/。在這些與日期相關的文件夾中,我保存著各種與特定事件相關的文件:照片、(掃描的)pdf 文件、文本文件等等。

對於共享數據,我設置一個 $HOME/share/ 子層次結構。這是我的 Dropbox 文件夾,我用各種各樣的方法(比如 unison)來分享數據。我也在我的設備之間共享數據:家裡的 Mac Mini、家裡的 GNU/Linux 筆記本、Android 手機,root-server(我的個人雲),工作用的 Windows 筆記本。我不想在這裡詳細說明我的同步設置。如果你想了解相關的設置,可以參考另一篇相關的文章。:-)

在我的 $HOME/templates_tags/ 子層次結構中,我保存了各種模板文件LaTeX、腳本、…),插圖和徽標,等等。

我的 Org 模式 文件,主要是保存在 $HOME/org/。我練習記憶力,不會解釋我有多喜歡 Emacs/Org 模式 以及我從中獲益多少。你可能讀過或聽過我詳細描述我用它做的很棒的事情。具體可以在我的博客上查找 我的 Emacs 標籤,在 Twitter 上查找 hashtag #orgmode

以上就是我最重要的文件夾子層次結構設置方式。

我的工作流程

噠噠噠,在你了解了我的文件夾結構和文件名約定之後,下面是我當前的工作流程和工具,我使用它們來滿足我前面描述的需求。

請注意,你必須知道你在做什麼。我這裡的示例及文件夾路徑和更多只適用我的機器或我的環境你必須採用相應的路徑、文件名等來滿足你的需求!

工作流程:將文件從 SD 卡移動到筆記本電腦、旋轉人像圖像,並重命名文件

當我想把數據從我的數碼相機移到我的 GNU/Linux 筆記本上時,我拿出它的 mini SD 存儲卡,把它放在我的筆記本上。然後它會自動掛載在 /media/digicam 上。

然後,調用 getdigicamdata。它做了如下幾件事:它將文件從 SD 卡移動到一個臨時文件夾中進行處理。原始文件名會轉換為小寫字元。所有的人像照片會使用 jhead 旋轉。同樣使用 jhead,我從 Exif 頭的時間戳中生成文件名稱中的時間戳。使用 date2name,我也將時間戳添加到電影文件中。處理完所有這些文件後,它們將被移動到新的數碼相機文件的目標文件夾: $HOME/tmp/digicam/tmp/

工作流程:文件夾索引、查看、重命名、刪除圖像文件

為了快速瀏覽我的圖像和電影文件,我喜歡使用 GNU/Linux 上的 geeqie。這是一個相當輕量級的圖像瀏覽器,它具有其他文件瀏覽器所缺少的一大優勢:我可以添加通過鍵盤快捷方式調用的外部腳本/工具。通過這種方式,我可以通過任意外部命令擴展這個圖像瀏覽器的特性。

基本的圖像管理功能是內置在 geeqie:瀏覽我的文件夾層次結構、以窗口模式或全屏查看圖像(快捷鍵 f)、重命名文件名、刪除文件、顯示 Exif 元數據(快捷鍵 Ctrl-e)。

在 OS X 上,我使用 Xee。與 geeqie 不同,它不能通過外部命令進行擴展。不過,基本的瀏覽、查看和重命名功能也是可用的。

工作流程:添加和刪除標籤

我創建了一個名為 filetags 的 Python 腳本,用於向單個文件以及一組文件添加和刪除標記。

對於數碼照片,我使用標籤,例如,specialL 用於我認為適合桌面背景的風景圖片,specialP 用於我想展示給其他人的人像照片,sel 用於篩選,等等。

使用 geeqie 初始設置 filetags

向 geeqie 添加 filetags 是一個手動步驟:「Edit > Preferences > Configure Editors …」,然後創建一個附加條目 New。在這裡,你可以定義一個新的桌面文件,如下所示:

[Desktop Entry]
Name=filetags
GenericName=filetags
Comment=
Exec=/home/vk/src/misc/vk-filetags-interactive-adding-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

add-tags.desktop

封裝腳本 vk-filetags-interactive-adding-wrapper-with-gnome-terminal.sh 是必須的,因為我想要彈出一個新的終端,以便添加標籤到我的文件:

#!/bin/sh

/usr/bin/gnome-terminal 
 --geometry=85x15+330+5 
 --tab-with-profile=big 
 --hide-menubar 
 -x /home/vk/src/filetags/filetags.py --interactive "${@}"

#end

vk-filetags-interactive-adding-wrapper-with-gnome-terminal.sh

在 geeqie 中,你可以在 「Edit > Preferences > Preferences … > Keyboard」。我將 tfiletags 命令相關聯。

這個 filetags 腳本還能夠從單個文件或一組文件中刪除標記。它基本上使用與上面相同的方法。唯一的區別是 filetags 腳本額外的 --remove 參數:

[Desktop Entry]
Name=filetags-remove
GenericName=filetags-remove
Comment=
Exec=/home/vk/src/misc/vk-filetags-interactive-removing-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

remove-tags.desktop

#!/bin/sh

/usr/bin/gnome-terminal 
 --geometry=85x15+330+5 
 --tab-with-profile=big 
 --hide-menubar 
 -x /home/vk/src/filetags/filetags.py --interactive --remove "${@}"

#end

vk-filetags-interactive-removing-wrapper-with-gnome-terminal.sh

為了刪除標籤,我創建了一個鍵盤快捷方式 T

在 geeqie 中使用 filetags

當我在 geeqie 文件瀏覽器中瀏覽圖像文件時,我選擇要標記的文件(一到多個)並按 t。然後,一個小窗口彈出,要求我提供一個或多個標籤。用回車確認後,這些標籤被添加到文件名中。

刪除標籤也是一樣:選擇多個文件,按下 T,輸入要刪除的標籤,然後按回車確認。就是這樣。幾乎沒有給文件添加或刪除標籤的更簡單的方法了

工作流程:改進的使用 appendfilename 重命名文件

不使用 appendfilename

重命名一組大型文件可能是一個冗長乏味的過程。對於 2014-04-20T17.09.11_p1100386.jpg 這樣的原始文件名,在文件名中添加描述的過程相當煩人。你將按 Ctrl-r (重命名)在 geeqie 中打開文件重命名對話框。默認情況下,原始名稱(沒有文件擴展名的文件名稱)被標記。因此,如果不希望刪除/覆蓋文件名(但要追加),則必須按下游標鍵 。然後,游標放在基本名稱和擴展名之間。輸入你的描述(不要忘記以空格字元開始),並用回車進行確認。

在 geeqie 使中用 appendfilename

使用 appendfilename,我的過程得到了簡化,可以獲得將文本附加到文件名的最佳用戶體驗:當我在 geeqie 中按下 a(附加)時,會彈出一個對話框窗口,詢問文本。在回車確認後,輸入的文本將放置在時間戳和可選標記之間。

例如,當我在 2014-04-20T17.09.11_p1100386.jpg 上按下 a,然後鍵入Pick-nick in Graz 時,文件名變為 2014-04-20T17.09.11_p1100386 Pick-nick in Graz.jpg。當我再次按下 a 並輸入 with Susan 時,文件名變為 2014-04-20T17.09.11_p1100386 Pick-nick in Graz with Susan.jpg。當文件名添加標記時,附加的文本前將附加標記分隔符。

這樣,我就不必擔心覆蓋時間戳或標記。重命名的過程對我來說變得更加有趣!

最好的部分是:當我想要將相同的文本添加到多個選定的文件中時,也可以使用 appendfilename

在 geeqie 中初始設置 appendfilename

添加一個額外的編輯器到 geeqie: 「Edit > Preferences > Configure Editors … > New」。然後輸入桌面文件定義:

[Desktop Entry]
Name=appendfilename
GenericName=appendfilename
Comment=
Exec=/home/vk/src/misc/vk-appendfilename-interactive-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

appendfilename.desktop

同樣,我也使用了一個封裝腳本,它將為我打開一個新的終端:

#!/bin/sh

/usr/bin/gnome-terminal 
 --geometry=90x5+330+5 
 --tab-with-profile=big 
 --hide-menubar 
 -x /home/vk/src/appendfilename/appendfilename.py "${@}"

#end

vk-appendfilename-interactive-wrapper-with-gnome-terminal.sh

工作流程:播放電影文件

在 GNU/Linux 上,我使用 mplayer 回放視頻文件。由於 geeqie 本身不播放電影文件,所以我必須創建一個設置,以便在 mplayer 中打開電影文件。

在 geeqie 中初始設置 mplayer

我已經使用 xdg-open 將電影文件擴展名關聯到 mplayer。因此,我只需要為 geeqie 創建一個通用的「open」命令,讓它使用 xdg-open 打開任何文件及其關聯的應用程序。

在 geeqie 中,再次訪問 「Edit > Preferences > Configure Editors …」 添加「open」的條目:

[Desktop Entry]
Name=open
GenericName=open
Comment=
Exec=/usr/bin/xdg-open %F
Icon=
Terminal=true
Type=Application
hidden=false
NOMimeType=*;
MimeType=image/*;video/*
Categories=X-Geeqie;

open.desktop

當你也將快捷方式 o (見上文)與 geeqie 關聯時,你就能夠打開與其關聯的應用程序的視頻文件(和其他文件)。

使用 xdg-open 打開電影文件(和其他文件)

在上面的設置過程之後,當你的 geeqie 游標位於文件上方時,你只需按下 o 即可。就是如此簡潔。

工作流程:在外部圖像編輯器中打開

我不太希望能夠在 GIMP 中快速編輯圖像文件。因此,我添加了一個快捷方式 g,並將其與外部編輯器 「GNU Image Manipulation Program (GIMP)」 關聯起來,geeqie 已經默認創建了該外部編輯器。

這樣,只需按下 g 就可以在 GIMP 中打開當前圖像。

工作流程:移動到存檔文件夾

現在我已經在我的文件名中添加了注釋,我想將單個文件移動到 $HOME/archive/events_memories/2014/,或者將一組文件移動到這個文件夾中的新文件夾中,如 $HOME/archive/events_memories/2014/2014-05-08 business marathon after show - party

通常的方法是選擇一個或多個文件,並用快捷方式 Ctrl-m 將它們移動到文件夾中。

何等繁複無趣之至!

因此,我(再次)編寫了一個 Python 腳本,它為我完成了這項工作:move2archive(簡寫為:m2a),需要一個或多個文件作為命令行參數。然後,出現一個對話框,我可以在其中輸入一個可選文件夾名。當我不輸入任何東西而是按回車,文件被移動到相應年份的文件夾。當我輸入一個類似 Business-Marathon After-Show-Party 的文件夾名稱時,第一個圖像文件的日期戳被附加到該文件夾($HOME/archive/events_memories/2014/2014-05-08 Business-Marathon After-Show-Party),然後創建該文件夾,並移動文件。

再一次,我在 geeqie 中選擇一個或多個文件,按 m(移動),或者只按回車(沒有特殊的子文件夾),或者輸入一個描述性文本,這是要創建的子文件夾的名稱(可選不帶日期戳)。

沒有一個圖像管理工具像我的帶有 appendfilename 和 move2archive 的 geeqie 一樣可以通過快捷鍵快速且有趣的完成工作。

在 geeqie 里初始化 m2a 的相關設置

同樣,向 geeqie 添加 m2a 是一個手動步驟:「Edit > Preferences > Configure Editors …」,然後創建一個附加條目「New」。在這裡,你可以定義一個新的桌面文件,如下所示:

[Desktop Entry]
Name=move2archive
GenericName=move2archive
Comment=Moving one or more files to my archive folder
Exec=/home/vk/src/misc/vk-m2a-interactive-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

m2a.desktop

封裝腳本 vk-m2a-interactive-wrapper-with-gnome-terminal.sh 是必要的,因為我想要彈出一個新的終端窗口,以便我的文件進入我指定的目標文件夾:

#!/bin/sh

/usr/bin/gnome-terminal 
 --geometry=157x56+330+5 
 --tab-with-profile=big 
 --hide-menubar 
 -x /home/vk/src/m2a/m2a.py --pauseonexit "${@}"

#end

vk-m2a-interactive-wrapper-with-gnome-terminal.sh

在 geeqie 中,你可以在 「Edit > Preferences > Preferences … > Keyboard」 將 mm2a 命令相關聯。

工作流程:旋轉圖像(無損)

通常,我的數碼相機會自動將人像照片標記為人像照片。然而,在某些特定的情況下(比如從裝飾圖案上方拍照),我的相機會出錯。在那些罕見的情況下,我必須手動修正方向。

你必須知道,JPEG 文件格式是一種有損格式,應該只用於照片,而不是計算機生成的東西,如屏幕截圖或圖表。以傻瓜方式旋轉 JPEG 圖像文件通常會解壓/可視化圖像文件、旋轉生成新的圖像,然後重新編碼結果。這將導致生成的圖像比原始圖像質量差得多

因此,你應該使用無損方法來旋轉 JPEG 圖像文件。

再一次,我添加了一個「外部編輯器」到 geeqie:「Edit > Preferences > Configure Editors … > New」。在這裡,我添加了兩個條目:使用 exiftran,一個用於旋轉 270 度(即逆時針旋轉 90 度),另一個用於旋轉 90 度(順時針旋轉 90 度):

[Desktop Entry]
Version=1.0
Type=Application
Name=Losslessly rotate JPEG image counterclockwise

# call the helper script
TryExec=exiftran
Exec=exiftran -p -2 -i -g %f

# Desktop files that are usable only in Geeqie should be marked like this:
Categories=X-Geeqie;
OnlyShowIn=X-Geeqie;

# Show in menu "Edit/Orientation"
X-Geeqie-Menu-Path=EditMenu/OrientationMenu

MimeType=image/jpeg;

rotate-270.desktop

[Desktop Entry]
Version=1.0
Type=Application
Name=Losslessly rotate JPEG image clockwise

# call the helper script
TryExec=exiftran
Exec=exiftran -p -9 -i -g %f

# Desktop files that are usable only in Geeqie should be marked like this:
Categories=X-Geeqie;
OnlyShowIn=X-Geeqie;

# Show in menu "Edit/Orientation"
X-Geeqie-Menu-Path=EditMenu/OrientationMenu

# It can be made verbose
# X-Geeqie-Verbose=true

MimeType=image/jpeg;

rotate-90.desktop

我創建了 geeqie 快捷鍵 [(逆時針方向)和 ](順時針方向)。

工作流程:可視化 GPS 坐標

我的數碼相機有一個 GPS 感測器,它在 JPEG 文件的 Exif 元數據中存儲當前的地理位置。位置數據以 WGS 84 格式存儲,如 47, 58, 26.73; 16, 23, 55.51(緯度;經度)。這一方式可讀性較差,我期望:要麼是地圖,要麼是位置名稱。因此,我向 geeqie 添加了一些功能,這樣我就可以在 OpenStreetMap 上看到單個圖像文件的位置: Edit > Preferences > Configure Editors ... > New

[Desktop Entry]
Name=vkphotolocation
GenericName=vkphotolocation
Comment=
Exec=/home/vk/src/misc/vkphotolocation.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/pjpeg;image/png;image/tiff;image/x-bmp;image/x-gray;image/x-icb;image/x-ico;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/x-pcx;image/svg+xml;image/svg+xml-compressed;image/vnd.wap.wbmp;

photolocation.desktop

這調用了我的名為 vkphotolocation.sh 的封裝腳本,它使用 ExifToolMarble 能夠讀取和可視化的適當格式提取該坐標:

#!/bin/sh

IMAGEFILE="${1}"
IMAGEFILEBASENAME=`basename ${IMAGEFILE}`

COORDINATES=`exiftool -c %.6f "${IMAGEFILE}" | awk '/GPS Position/ { print $4 " " $6 }'`

if [ "x${COORDINATES}" = "x" ]; then
 zenity --info --title="${IMAGEFILEBASENAME}" --text="No GPS-location found in the image file."
else
 /usr/bin/marble --latlon "${COORDINATES}" --distance 0.5
fi

#end

vkphotolocation.sh

映射到鍵盤快捷鍵 G,我可以快速地得到單個圖像文件的位置的地圖定位

當我想將多個 JPEG 圖像文件的位置可視化為路徑時,我使用 GpsPrune。我無法挖掘出 GpsPrune 將一組文件作為命令行參數的方法。正因為如此,我必須手動啟動 GpsPrune,用 「File > Add photos」選擇一組文件或一個文件夾。

通過這種方式,我可以為每個 JPEG 位置在 OpenStreetMap 地圖上獲得一個點(如果配置為這樣)。通過單擊這樣一個點,我可以得到相應圖像的詳細信息。

如果你恰好在國外拍攝照片,可視化 GPS 位置對在文件名中添加描述大有幫助!

工作流程:根據 GPS 坐標過濾照片

這並非我的工作流程。為了完整起見,我列出該工作流對應工具的特性。我想做的就是從一大堆圖片中尋找那些在一定區域內(範圍或點 + 距離)的照片。

到目前為止,我只找到了 DigiKam,它能夠根據矩形區域進行過濾。如果你知道其他工具,請將其添加到下面的評論或給我寫一封電子郵件。

工作流程:顯示給定集合的子集

如上面的需求所述,我希望能夠對一個文件夾中的文件定義一個子集,以便將這個小集合呈現給其他人。

工作流程非常簡單:我向選擇的文件添加一個標記(通過 t/filetags)。為此,我使用標記 sel,它是 「selection」 的縮寫。在標記了一組文件之後,我可以按下 s,它與一個腳本相關聯,該腳本只顯示標記為 sel 的文件。

當然,這也適用於任何標籤或標籤組合。因此,用同樣的方法,你可以得到一個適當的概述,你的婚禮上的所有照片都標記著「教堂」和「戒指」。

很棒的功能,不是嗎?:-)

初始設置 filetags 以根據標籤和 geeqie 過濾

你必須定義一個額外的「外部編輯器」,「 Edit > Preferences > Configure Editors … > New」:

[Desktop Entry]
Name=filetag-filter
GenericName=filetag-filter
Comment=
Exec=/home/vk/src/misc/vk-filetag-filter-wrapper-with-gnome-terminal.sh
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

filter-tags.desktop

再次調用我編寫的封裝腳本:

#!/bin/sh

/usr/bin/gnome-terminal 
 --geometry=85x15+330+5 
 --hide-menubar 
 -x /home/vk/src/filetags/filetags.py --filter

#end

vk-filetag-filter-wrapper-with-gnome-terminal.sh

帶有參數 --filterfiletags 基本上完成的是:用戶被要求輸入一個或多個標籤。然後,當前文件夾中所有匹配的文件都使用符號鏈接鏈接到 $HOME/.filetags_tagfilter/。然後,啟動了一個新的 geeqie 實例,顯示鏈接的文件。

在退出這個新的 geeqie 實例之後,你會看到進行選擇的舊的 geeqie 實例。

用一個真實的案例來總結

哇哦, 這是一篇很長的博客文章。你可能已經忘了之前的概述。總結一下我在(擴展了標準功能集的) geeqie 中可以做的事情,我有一個很酷的總結:

快捷鍵 功能
m 移到歸檔(m2a)
o 打開(針對非圖像文件)
a 在文件名里添加欄位
t 文件標籤(添加)
T 文件標籤(刪除)
s 文件標籤(排序)
g gimp
G 顯示 GPS 信息
[ 無損的逆時針旋轉
] 無損的順時針旋轉
Ctrl-e EXIF 圖像信息
f 全屏顯示

文件名(包括它的路徑)的部分及我用來操作該部分的相應工具:

 /this/is/a/folder/2014-04-20T17.09 Picknick in Graz -- food graz.jpg
 [ move2archive  ] [  date2name   ] [appendfilename] [ filetags ]

在實踐中,我按照以下步驟將照片從相機保存到存檔:我將 SD 存儲卡放入計算機的 SD 讀卡器中。然後我運行 getdigicamdata.sh。完成之後,我在 geeqie 中打開 $HOME/tmp/digicam/tmp/。我瀏覽了一下照片,把那些不成功的刪除了。如果有一個圖像的方向錯誤,我用 [] 糾正它。

在第二步中,我向我認為值得評論的文件添加描述 (a)。每當我想添加標籤時,我也這樣做:我快速地標記所有應該共享相同標籤的文件(Ctrl + 滑鼠點擊),並使用 filetagst)進行標記。

要合併來自給定事件的文件,我選中相應的文件,將它們移動到年度歸檔文件夾中的 event-folder,並通過在 move2archivem)中鍵入事件描述,其餘的(非特殊的文件夾)無需聲明事件描述由 move2archivem)直接移動到年度歸檔中。

結束我的工作流程,我刪除了 SD 卡上的所有文件,把它從操作系統上彈出,然後把它放回我的數碼相機里。

以上。

因為這種工作流程幾乎不需要任何開銷,所以評論、標記和歸檔照片不再是一項乏味的工作。

最後

所以,這是一個詳細描述我關於照片和電影的工作流程的敘述。你可能已經發現了我可能感興趣的其他東西。所以請不要猶豫,請使用下面的鏈接留下評論或電子郵件。

我也希望得到反饋,如果我的工作流程適用於你。並且,如果你已經發布了你的工作流程或者找到了其他人工作流程的描述,也請留下評論!

及時行樂,莫讓錯誤的工具或低效的方法浪費了我們的人生!

其他工具

閱讀關於本文中關於 gThumb 的部分

當你覺得你以上文中所敘述的符合你的需求時,請根據相關的建議來選擇對應的工具。

via: http://karl-voit.at/managing-digital-photographs/

作者:Karl Voit 譯者:qfzy1233 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國