[Lua] TagMe! Skript, Fotos markieren mit eigenen Stichworten

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Beitragvon naddel » 06.12.2009, 22:07

Hallo stift,

in dieser Routine wird der Zähler nicht erniedrigt wenn der Eintrag entfernt wird.
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
    -- remove any directory name that is not "nnnCANON"

    repeat

        local S, E = string.find(Dir[I], "%d%d%dCANON")

        if S == nil and E == nil then table.remove(Dir, I) end

        I = I + 1

    until Dir[I] == nil

 
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9


Das könnte manches Fehlverhalten bei gehtnix erklären, da das nachfolgene Verzeichnis
übersprungen wird.

Gruß naddel
S2 1.00f mit aktueller DE Version
Benutzeravatar
naddel
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 156
Registriert: 26.01.2009, 19:42
Kamera(s): G3 s2 ixusii

TagMe und Susi

Beitragvon naddel » 08.12.2009, 00:29

Hallo gehtnix,

Lag Dein Problem an den vielen Kommentaren oder eher daran?

http://chdk.kernreaktor.org/mantis/view.php?id=326

Gehts jetzt

Gruß naddel
S2 1.00f mit aktueller DE Version
Benutzeravatar
naddel
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 156
Registriert: 26.01.2009, 19:42
Kamera(s): G3 s2 ixusii

Beitragvon Nando » 24.07.2010, 11:17

Hallo stift, hallo zusammen,
stift hat geschrieben:Um eine Weiterverwendung des EXIF Codes zu vereinfachen habe ich eine neue Version von TagMe erstellt. Hierbei befinden sich die EXIF Funktionen in einem separatem Modul EXIFModule.lua, das ueber den "require" Befehl in andere Lua Skripte eingebunden werden kann.

Hier ein Beispielskript das zeigt wie man EXIFModule einbindet. Das Skript schreibt nach dem Start einen Text in das zuletzt erstellte Foto. Der aktuelle Bilderorder muss manuell in den Code eingefuegt werden.

Code: Alles auswählen
-- importiere EXIF Modul
require "EXIFModule"

-- ein Objekt der JPEGImage Klasse erzeugen, JPEGImage ist definiert in EXIFModule.lua
P = JPEGImage

-- den Pfad zum aktuellen Foto zusammenbauen
ImgDir = "A/DCIM/131CANON/" -- hier den aktuellen Bilderordner einfuegen
ImgNumber = get_exp_count() -- Nummer des aktuellen Bildes ermitteln
No = tostring(ImgNumber)
ImgFileName = "IMG_"..string.rep("0", 4-string.len(No))..No..".JPG"

-- eigenen Text in EXIF Tag UserComment schreiben
P:new(ImgDir..ImgFileName)
P:SetUserComment("Mein neuer Text")
print("marked ", ImgFileName)
wait_click()
cls()




kann ich diese Codezeilen als Funktion in ein LUA-Script schreiben und damit einen Begriff in die Metainformationen schreiben?

Ich teste gerade mit Scripten. Der Übersichtlichkeit halber, will ich ein Kommentar in den Bildinformationen stehen haben, mit welchen Script es (bzw. die Bildfolge) erstellt wurde.

Kann mir da jemand kurz helfen?

bis dann,
Nando
Canon PowerShot SX200 IS 100D (seit Mitte Nov 2009), Canon PowerShot A1000 IS 100b
Nando
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 257
Registriert: 11.11.2009, 15:55

Beitragvon Nando » 27.07.2010, 10:35

Hallo zusammen,
ich habe dann mal den Mut gefasst und es probiert in ein LUA-Script einzubinden. ;)
Es funktioniert! Der Name des Scriptes, mit dem das Foto aufgenommen wurde, wird in den Metainformationen aufgeführt. 8)

@stift
Danke, das ist eine super Sache! :D

@all
Was ich gemacht habe:
- /CHDK/SCRIPTS/EXIFModule.lua hinzugefügt
- Zeilen im LUA-Script hinzugefügt und Verzeichnisnamen geändert
Code: Alles auswählen
-- importiere EXIF Modul
require "EXIFModule"

-- ein Objekt der JPEGImage Klasse erzeugen, JPEGImage ist definiert in EXIFModule.lua
P = JPEGImage

-- den Pfad zum aktuellen Foto zusammenbauen
ImgDir = "A/DCIM/131CANON/" -- hier den aktuellen Bilderordner einfuegen
ImgNumber = get_exp_count() -- Nummer des aktuellen Bildes ermitteln
No = tostring(ImgNumber)
ImgFileName = "IMG_"..string.rep("0", 4-string.len(No))..No..".JPG"

-- eigenen Text in EXIF Tag UserComment schreiben
P:new(ImgDir..ImgFileName)
P:SetUserComment("Mein neuer Text")


/CHDK/SCRIPTS/01_focus-stacking.lua
Code: Alles auswählen
--[[
@title Fokus-Stacking-LUA
@param a Fokus-Schritte [10] +
@default a 10
@param b Schrittweite [1]
@default b 1
@param d Anstieg [1]
@default d 1
@param h Ruhepause [3000]
@default h 3000
]]

print_screen (1234)

if a<1 then a=10 end
if b<1 then b=1 end
if d<1 then d=1 end
if h<1 then h=300 end


sleep (h)
f = get_focus ()

for i=1,a do
if f>65534 then
    print ( "max. Fokus" )
    sleep (3000)
else
--  g=f+(d*(i^5)/(m*10^5)+i)*10*b
-- d größer -> kleinerer Anstieg
-- b vielfaches der Schrittweite
    m = math.pow(10,5)
    l = math.pow(i,5)
    k = 10*l/(d*m)+i
    g = f+k*b
    set_focus (g)
      shoot ()
    print ( "Foto ".. i .. " " .. g )
    sleep (500)
      -- importiere EXIF Modul
      require "EXIFModule"

      -- ein Objekt der JPEGImage Klasse erzeugen, JPEGImage ist definiert in EXIFModule.lua
      P = JPEGImage

      -- den Pfad zum aktuellen Foto zusammenbauen
      ImgDir = "A/DCIM/101CANON/" -- hier den aktuellen Bilderordner einfuegen
      ImgNumber = get_exp_count() -- Nummer des aktuellen Bildes ermitteln
      No = tostring(ImgNumber)
      ImgFileName = "IMG_"..string.rep("0", 4-string.len(No))..No..".JPG"

      -- eigenen Text in EXIF Tag UserComment schreiben
      P:new(ImgDir..ImgFileName)
      P:SetUserComment("Fokus-Stacking-LUA")
      -- print("marked ", ImgFileName)
end
end
set_focus (f)


2 Sachen habe ich da aber noch.

Den Verzeichnisnamen hatte ich vorher mit "A/DCIM/100CANON/" angegeben. Das Verzeichnis existiert zwar (mit Fotos), aber die aktuellen Foto werden in 101CANON geschrieben. Ich bekam dann eine Fehlermeldung.
Code: Alles auswählen
Foto 1 497
A/CHDK/SCRIPTS/EXIFModule.LUA:279: attempt to index local 'inp' (a nil value)
PRESS SHUTTER TO CLOSE


Die etwas wichtigere Sache noch.
Bei "Entfernung des Motivs" wird jetzt über den Bildbetrachter in den Metadaten bei jedem Foto 0 angegeben.

Ich habe mal mit exiftool die Metainformationen zweier Bilder Verglichen. Es ist 1 Eintrag hinzugekommen/geändert, aber 2 fehlen.

in deutsch
Code: Alles auswählen
+ Angezeigte Blende               : 5.3
- Entfernte Fokus-Distanz         : 2.67
- Nahe Fokus-Distanz              : 0


in englisch
Code: Alles auswählen
- AF Point                        : Manual AF point selection
+ Display Aperture                : 5.3
- Focus Distance Upper            : 2.67
- Focus Distance Lower            : 0




bis dann,
Nando
Canon PowerShot SX200 IS 100D (seit Mitte Nov 2009), Canon PowerShot A1000 IS 100b
Nando
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 257
Registriert: 11.11.2009, 15:55

Re: TagMe! Skript, Fotos markieren mit eigenen Stichworten

Beitragvon ravler » 05.11.2011, 16:31

@stift

bei mit kommt eine Fehlermeldung das er Exif Module nicht finden kann !
was mache ich falsch ?
soll ich ein Bild uploaden


Grüße Ravler
ravler
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 8
Registriert: 30.06.2011, 15:54
Kamera(s): Canon Digital Ixus 100 is

Re: TagMe! Skript, Fotos markieren mit eigenen Stichworten

Beitragvon CHDKLover » 05.11.2011, 17:09

Hallo ravler,
stelle bitte sicher, dass sich die Datei "EXIFModule.lua" in dem Verzeichnis CHDK/SKRIPTS oder CHDK/LUALIB befindet. Dann sollte das Skript "TagMe.lua" ausführbar sein.

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Vorherige

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste