Pārsaukt failus, iekļaujot to nosaukumā attēla uzņemšanas laiku

Mar 17 2014 — Photo

Gan man, gan manai sievai patīk fotografēt. Ja vien nedodamies ceļojumā, kurā plānots kāds fiziski izaicinošs pārgājiens, parasti līdzi ir arī divas fotokameras. Tā saucamā lielā – Canon 6D, un mazā – Sony NEX F3. Lielo pārsvarā lietoju es, bet mazo – sieva.

Kad ceļojums ir galā, priekšā stāv bilžu apstrādes process – jāpiekoriģē ekspozīcija, jāiztaisno bildes, kas uzņemtas jautākā prātā, kā arī jāizdzēš bildes, kas ne gluži atbilst labas bildes kritērijiem vai arī ir dublikāti vai kādā citā veidā atzītas par nederīgām. No šīm savukārt ir jāatlasa tādas, kuras kādā viesošanās vakarā parādīt ģimenei un draugiem, jo ar daudzajiem simtiem bilžu, kas tiks noglabātas fotoarhīvā, negribas nomocīt ciemiņus. Rezultātā tiek atlasītas 50-100 interesantākās bildes. Daļa no tām ir no vienas kameras, bet daļa – no otras. Tā kā katrai kamerai ir sava numerācijas sistēma un tā sevī neiekļauj attēla uzņemšanas laiku, tad, sakārtojot tās pēc nosaukuma, no sākuma būs visas bildes no vienas kameras, bet pēc tam – no otras. Skatītājiem un arī pašam bilžu rādītājam tas var būt īpaši kaitinoši, jo sanāk, ka visam ceļojumam jāiziet cauri divreiz un stāstījums arī sanāk ļoti saraustīts.

Lai atrisinātu šo problēmu, mēģināju atrast kādu skriptu, kas varētu izvilkt foto uzņemšanas informāciju no EXIF datiem un ievietot to faila nosaukumā. Atradu daudz un dažādus variantus, tomēr tie visi šķita pārāk samežģīti un komplicēti tik vienkāršai operācijai, kā arī lāga nestrādāja uz mana datora, tāpēc izlēmu uzrakstīt šādu skriptu pats. Varbūt arī kādam citam tas noderēs.

for file in *.jpg; do
origDate=$(exiftool -DateTimeOriginal $file);
origDate=${origDate#*:};
origDate=${origDate/# /};
origDate=${origDate// /_};
origDate=${origDate//:/_};
cp $file $origDate$file;
done

Skripts izies cauri visiem JPG failiem tekošajā mapē un izveidos dublikātus visiem failiem ar foto uzņemšanas datumu un laiku faila nosaukuma sākuma daļā. Skriptu var modificēt savām vajadzībām, bet man viņš ir labs tāds, kāds viņš ir.

Skirpts darbojas OS X terminālī un, lai to lietotu, pirms tam nepieciešams uzinstalēt exiftool, kas ļauj izvilkt datuma informāciju no faila.

Protams, lai bildes būtu sakārtotas korekti, nepieciešams, lai abās kamerās arī laiks un datums būtu daudz maz sinhronizēts savā starpā.

No responses yet

Kā noteikt, cik kadrus izšāvusi kamera

Apr 05 2013 — Photo

Nav noslēpums, ka digitālās fotokameras slēdža resurss ir ierobežots. Un, ja tu šobrīd dodies uz laukiem filmēt kārtējo time-lapse, lai tikai redzētu, kā nokūst sniegs, tad padomā vēlreiz, vai tas tev tik tiešām ir nepieciešams. Ja pieņemam, ka video sekundē ir aptuveni 25 kadri un tu vēlies uztaisīt aptuveni vienu minūti garu time-lapse video, tad tas tev prasīs aptuveni 1500 kadrus. Kameras slēdža laiks (ar atsevišķiem izņēmumiem) parasti ir robežās no 50 000 – 150 000. Te var apskatīt datus par Canon kamerām, skrollējam vairāk uz leju. Tātad, ja tev ir vidējā Canon kamera ar 100 000 slēdža resursu, tad tavs vienu minūti garais time-lapse iztērēs aptuveni 1.5% no tava slēdža resursa. Tas nozīmē, ka ar šo kameru tu vari uzfilmēt vidēja garuma Holivudas filmu time-lapse režīmā. Protams, bieži kameras šo aptuveno resursu pārdzīvo pat par vairāk kā 100 tūkstošiem, tāpēc par absolūto kameras dzīves ilguma rādītāju to nevajadzētu uztvert (turklāt, lai arī dārgi, slēdzi iespējams arī nomainīt), tomēr, ja vēlies iegādāties kameru lietotajā tirgū, tad šis skaitlis diezgan skaidri pateiks, vai ar to bildētas pīles vietējā dīķī svētdienu pēcpusdienās vai tomēr tas ir bijis kāzu fotogrāfs, kurš vienā nedēļas nogalē izbliež daudzus tūkstošus kadru. Bet varbūt tas bijis kāds, kurš filmējis Holivudas garuma filmu time-lapse režīmā?

Dažas kameras šo informāciju saglabā katrā kadrā EXIF informācijā. Šādām kamerām to atrast būs diezgan vienkārši, bet, ja tas tomēr ir par grūtu, tad var augšupielādēt ar kameru uzņemtu attēlu šajā lapā http://www.camerashuttercount.com/ un tā pateiks kameras slēdža dzīves ilgumu. Diemžēl, Canon šo informāciju nesaglabā attēlā, tāpēc tik vienkārši to iegūt nevar. Var, protams, nest kameru uz Canon servisa centru, kur šo informāciju iespējams uzzināt (par konkrētu samaksu?), bet neba tas vienmēr būs tik ērti, ja vēlaties iegādāties lietotu fotoaparātu.

Eksistē arī maksas rīki internetā, kur samaksājot aptuveni 2$ iespējams noteikt slēdža laiku vienai kamerai. Nezinu, iespējams, viņi arī darbojas, neesmu mēģinājis. Tomēr es atradu veidu, kā to noteikt bez maksas pašam. Par to paldies Tobias Müller.

Ievietošu aprakstu arī šeit, jo informācija internetā mēdz pazust:

  1. Šis darbojas tikai uz Apple OS X un Linux operētājsistēmām
  2. Instalējam Xcode no AppStore (bez maksas)
  3. Atveram termināli (rakstām Terminal iekš Spotlight) un instalējam homebrew, izpildot sekojošo komandu:
    ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

    Tad izpildām terminālī zemāk esošo komandu un izdarām visu, ko viņa saka (iespējams, ka būs vēl kaut kas jāpieinstalē, iespējams nē):

    brew doctor
  4. Instalējam gphoto2, kas tad arī noteiks slēdža noskrējienu, ar komandu
    brew install gphoto2
  5. Pievienojam kameru datoram ar USB vadu
  6. Lai aizvērtu Apple Picture-Transfer-Protocol, kas neļauj piekļūt kamerai, terminālī rakstām
    killall PTPCamera
  7. Lai iegūtu kameras shutter count rakstām sekojošo komandu
    gphoto2 --get-config /main/status/shuttercounter

Rezultātā saņemsim kaut ko tamlīdzīgu:

Label: Shutter Counter
Type: TEXT
Current: 15467

No kameras iespējams iegūt vēl daudz un dažādu informāciju. Pilnu sarakstu ar iespējamajām komandām iespējams iegūt,  ar sekojošo komandu:

gphoto2 --list-config

Ja pareizi saprotu, tad Linux vidē pirmos trīs soļus var izlaist, jāinstalē tikai gphoto2 (sudo apt-get install gphoto2), bet tā kā pats to neesmu darījis, tad detaļās neiedziļināšos.

One response so far