發表文章

目前顯示的是 八月, 2012的文章

f-spot升級後無法開啟之前匯入的照片問題

在linux環境下的照片管理上,本身是f-spot的愛好者,前陣子把f-spot的最新版本編譯出來後(一口氣從0.4升到0.8),發現使用新版本的f-spot有一個很大的問題,就是開啟f-spot之後無法開啟之前舊版本匯入的照片。只要一點開舊版本匯入的照片時就會crash掉,f-spot自己就整個關掉了。

昨天抽時間看了錯誤訊息主要看到的錯誤訊息是
“Unhandled ExceptionGLib.GException: Value for PNG text chunk Thumb::URI cannot be converted to ISO-8859-1 encoding.”
到官網的論壇看了一些其他使用者的說明後發現,舊版本的f-spot在存照片路徑是用iso-9501編碼的,而新版本是用UTF8編碼的。舉個例子來說,如果你的照片存放路徑是 /home/mich/photo/假日出遊,舊版本在資料庫中存放的記錄就是 files:///home/mich/photo/假日出遊 ,而新版本存放的卻是 files:///home/mich/photo/%E5%81%87%E6%97%A5%E5%87%BA%E9%81%8A 

也就是這個差別導致了新版本開不了舊版本的照片,所以根本的解決方法就是把資料庫中的路徑資料轉換成UTF8編號。這個解決方法在官網上有人指出了要修正那一個Table的欄位,也因此省下了追查的時間。

在要開始修改之前請務將資料庫檔案備份一份,萬一改壞或玩掛了才能回復。
在gnome的環境下f-spot的資料庫檔案是在 "~/.config/f-spot"資料夾下的photos.db,因為f-spot是用sqlite來做資料庫,所以直接用sqlite3 photos.db開啟即可以開始對資料庫進行操作。
找出table photos和table photo_versions中的base_uri欄位中有中文的欄位做修正即可。sql的語法如下:

update photos set base_uri = replace(base_uri,'file:///home/kkion/photo/台北兒童樂園員山分園/','file:///home/kkion/photo/%E5%8F%B0%E5%8C%97%E5%85%92%E7…