Kuidas Fotod Digikaamerast Kõvakettale Tõmmata Ja Neile Loetavad Nimed Anda

Kirjutas vader

 (6 korda hinnatud)

Oled tüdinud kohmakate ja aeglaste programmidega digikaamerast piltide tõmbamisest, sulle ei meeldi, et kõik pildid on nimetatud umbes nagu DSC01345.JPG, programmeerimine ei ole sulle võõras ning tunned mõnu millegi laheda loomisest - see artikkel on just sulle!

Juhised ja sammud

Raskusaste: Väljakutsuv

Vajalikud asjad

  • Python, teksti redaktor, tahtmine midagi korda saata!
1
Kui sul pole python masinasse installeeritud, siis saad selle lehelt http://www.python.org - sealt saad lugeda veel sisukat tutoriali pythoni kohta kui oled alles algaja. Kui python installeeritud, ava oma lemmik tekstiredaktor ja hakkame pihta. Minu lemmik redaktor on Notepad++ - ekstreemselt kiire, lihtne kuid lõputult tuunimist toetav proge. Saad tõmmata siit http://notepad-plus.sourceforge.net

Pythoni programme saab käivitada käsurealt:
Start -> Run -> cmd -> C:/Python25/python.exe programm.py
2
Nonii nüüd asja kallale. Kõigepealt anname pythonile teada, milliseid, juba olemasolevaid koodijuppe me kasutama hakkame. Selleks lisame faili algusesse read

Kood:

import glob
import shutil
import os


Need read ütlevad pythonile, et hakkame kasutama funktsioone vastavatest teekidest (koodiportsjonid)
3
Nii, nüüd ütleme pythonile kuhu kausta tahame oma pildid tõmmata ning mis sõnaga võiks piltide nimed alata. Hiljem näed kuidas lisame veel preefiksile piltide numbrid.

Kood:

print 'Sisesta kaust kuhu pildid kopeerida: '
folder = raw_input()

print 'Sisesta pildinimede preefiks: '
name = raw_input()


See kood prindib konsooli lause ja jääb ootama kasutaja sisestatud teksti, mis omistatakse muutujale.
4
Otsime kaamerast failid üles, teeme ka lihtsa veakontrolli, et asi oleks professionaalsem :)

Kood:

try:
list = glob.glob('F:/DCIM/101MSDCF/*.JPG')
except e:
print e


glob funktsioon lihtsalt otsib etteantud kaustast faile. Hetkel siis F:/DCIM/101MSDCF/ kataloogist kõiki .JPG faile ning paneb need list massiivi

F:/DCIM/101MSDCF/*.JPG asenda sina oma fotoka spetsiifilise rajaga (path)
5
Edasi vaatame kas kaust kuhu tahad oma pildid kopeerida on juba olemas. Kui ei ole siis pole hullu. Lihtsalt teeme sellise kausta.

Kood:

dst = 'C://Documents and Settings//Siim//My Documents//My Pictures//' + folder

if not os.path.isdir(dst):
os.mkdir(dst)
6
Ja lõpuks asja kallale!

Kood:

cnt = 0

for src in list:
cnt += 1
prf = cnt < 10 and '00' or (cnt < 100 and '0' or '')
file = name + prf + str(cnt) + '.jpg'
print 'saving ' + file
shutil.move(src, dst + '//' + file)

print 'Tehtud!'


Vaatame kõik pildid, mis ennem leidsime läbi.
Järjekorranumbri genereerime nii, et ühekohalise järjekorranumbri korral anname 001, kahekohalise korral 011 ja kolmekohalise korral 111. Siis on silmal ilus vaadata.
Paneme pildi nime kokku ühte muutujasse.
Anname kasutajale ka teada, kuidas asi edaneb ja liigutame pildi kaamerast soovitud kausta!
Kui kõik pildid kopeeritud ütleme seda ka kasutajale.

Voilaa, nii lihtne oligi.
7
Paneme nüüd asja tööle ka.
Salvesta kirjutatud fail näiteks C: kettale nimega pildihankija.py
Käivita näiteks niimoodi: Start -> Run -> cmd -> cd C:/ -> C:/Python25/python.exe pildihankija.py

Nipid ja hoiatused

  • Arenda ennast ja lisa progejupile uusi featuure (onju nõme sõna :d) Mõned näited
  • Mõtle kuidas videod ka fotokast kätte saada
  • Nuputa mis vead programmis võivad esineda ja püüa need kinni, ning katsu taastada süsteemi algne seisund (näiteks kui tehti uus kaust aga pilte sinna ei pandud, siis kustuta kaust jne.)
  • Pilte võib tõmmata ükskõik millisest arvutiga ühendatud meediumist! Uuri kuidas!
  • Proovi teha nii, et pildid kaamerasse alles jääksid
  • Selle programmijupi saad panna automaatselt käivituma kui kaamera arvutiga ühendad
  • Pildid liigutatakse kaamerast soovitud kausta st. kaamerasse need alles ei jää! Seega katseta asja mingite suvaliste test piltidega.

Kommentaarid