Tech ramblings by Marcin

Ludzie! Porzućcie F-Spot!

2009-09-20 17:57

Dziś usiadłem do porządkowania zdjęć z wyjazdu wakacyjnego. Postanowiłem użyć do tego właśnie programu F-Spot. Wydawał się on odpowiedni. Zaimportował fotki, posortował według informacji EXIF. Schody zaczęły się w momencie edycji całej kolekcji.

Ze zdjęciami było trochę problemów, którymi chciałem się zająć:

  • część trzeba było obrócić
  • połowa była zrobiona na Nikonie, który nie miał ustawionej daty, tak więc ficzer sortowania po dacie z nagłówka EXIF wziął w łeb

Tak więc chciałem poobracać fotki i uporządkować wedle czasu. Pierwsza czynność poszła w miarę łatwo. Druga była już lekko upierdliwa - np. Można zaznaczyć wszystkie fotki i otworzyć je w okienku do zmiany czasu, ale wtedy zapisywane są zmiany dopiero po wciśnięciu OK. Niby byłoby to fajne, ale, gdy ustawimy czas dla jednej fotki, to mamy taki oto wybór:

fspot-fail

Albo zastosujemy tą datę do wszystkich zdjęć, albo damy zdefiniowany krok pomiędzy zdjęciami. A jakbym chciał tylko częściowo skorzystać z tych opcji, albo jednocześnie, to co niby mam zrobić?? Może da się to zrobić jakoś inaczej, ale jest to w obecnej formie krańcowo nieintuicyjne. W rezultacie proces porządkowania to około 1h - przy 500 zdjęciach.

Mając już posortowane fotki chciałem je zapisać do folderu. Jest przecież opcja "Export->Folder", która dokładnie to robi. A ja lubię mieć fotki w folderach, a nie zarządzane wyłącznie jakąś dodatkową aplikacją. Niestety okazało się, że dostaję piękną wywrotkę F-Spota:


Stacktrace: at (wrapper managed-to-native) Exif.ExifData.exif_data_save_data (System.Runtime.InteropServices.HandleRef,intptr&,uint&) <0x00004> at (wrapper managed-to-native) Exif.ExifData.exif_data_save_data (System.Runtime.InteropServices.HandleRef,intptr&,uint&) <0xffffffff> at Exif.ExifData.Save () <0x0006c> at JpegHeader.SetExif (Exif.ExifData) <0x00014> at FSpot.JpegFile.SaveMetaData (System.IO.Stream,System.IO.Stream) <0x0004e> at FSpot.JpegFile.Save (Gdk.Pixbuf,System.IO.Stream) <0x00149> at FSpot.Filters.ResizeFilter.Convert (FSpot.Filters.FilterRequest) <0x001d1> at FSpot.Filters.FilterSet.Convert (FSpot.Filters.FilterRequest) <0x000e6> at FSpotFolderExport.FolderGallery.ProcessImage (int,FSpot.Filters.FilterSet) <0x0060a> at FSpotFolderExport.FolderExport.Upload () <0x0050f> at (wrapper runtime-invoke) System.Object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>

Aby nie czekać na poprawki i dochodzenie co i jak w samym programie postanowiłem obejść program i korzystając z informacji z bazy SQLite, wewnętrznie wykorzystywana baza F-Spota, sam uporządkowałem moje fotki w folderze.

Jeśli komuś byłoby to kiedyś potrzebne, to korzystając z wersji 0.5.0.3 pomógł mi taki skrypcik:

#!/bin/sh
for pair in `sqlite3 photos.db 'select * from photos' | awk -F\| '{ print $2 "|" $3}'`
do
    seconds=`echo $pair | awk -F\| '{print $1}'`
    path=`echo $pair | awk -F\| '{print $2}' | sed -e 's/file:\/\///'`
    photo_date=`date -d @$seconds +%F_%H:%M`
    cp $path Desktop/Sycylia_09.2009/$photo_date.jpg
    echo $photo_date $path
done

No i ok, o ile pierwsze z moich zarzutów można jakoś ścierpieć i starać się wytłumaczyć (choćby tym, że ostatnio czytałem książkę "Designing interfaces" (Amazon), to już nie wyobrażam sobie jak można dopuścić do tego, żeby aplikacja wywalała się przy dosyć kluczowej - bo końcowej, operacji!

Comments

DigiKam i Gwenview oferują znacznie więcej, a tym samym są mniej zasobożerne od F-Spot. Jeśłi ktoś uparcie chce aplikację napisaną z użyciem gtk to polecam Shotwell:

http://yorba.org/shotwell/

Ja jestem zadowolony z F-spot na Mandriva Extreme 2

Totalna załamka F-Spot :F

Odnośnie pakietów i repozytoriów w openSUSE, to rzeczywiście jest tam niezły syf. Webowy klient Build Service powinien dorobić się jakiegoś interfejsu propozycji pakietów do oficjalnego repozytorium, które winno być jedno i powinno zawierać aktualizacje. Mniej do pobierania, większy porządek.

Bo Contrib nie zdało egzaminu.

@Jajcuś - racja, ale w jednym z wcześniejszych postów na tym blogu żaliłem się na system pakietowy openSuse, na którym to używałem tego f-spota.

Ok, fakt jest faktem, powinienem dać szansę nowszej wersji.

no brak jest alterntywy

Wiesz… aktualna wersja f-spot to 0.6.1.2, a nie 0.5.0.3.
No i ja alternatywy dla F-Spot nie widzę… oglądałem różne alternatywy (czy Picassa, czy GThumb) i niestety, jak dla mnie nawet nie zbliżyło się użytecznością do tego, dalekiego od doskonałości, F-Spota.

Zamiast robić durne afery, zgłoś błąd...

Wyobraź sobie, dla własnego komfortu psychicznego, co byłoby, gdyby każdy robił aferę ze znalezionego buga. Jogger musiałby zmienić nazwę na Bugger albo I'm-too-lazy-or-sth-to-file-a-bug.

Marcin: gthumb w niektórych wersjach ma BUG. Też to mam.

digiKam

Cóż mogę powiedzieć, SOA#1 :).

@kmitko: a czy trzeba zrobić coś specjalnego, żeby w gthumb, przy przeglądaniu folderów ze zdjęciami pokazały się te pliki? W tej chwili gdy wchodzę do zadanego katalogu nic nie pokazuje się, tak jakby był pusty. A nie jest :)

To już zależy od wymagań. Ja przerzuciłem się na gthumb — jest import zdjęć, prosta edycja, katalogi działające jak tagi i eksport do galerii html.

jeśli nie f-spot to co?