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

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

Beitragvon naddel » 06.12.2009, 23: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.003 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, 20:42
Kamera(s): G3 s2 ixusii

TagMe und Susi

Beitragvon naddel » 08.12.2009, 01: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, 20:42
Kamera(s): G3 s2 ixusii

Beitragvon Nando » 24.07.2010, 12: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, 16:55

Beitragvon Nando » 27.07.2010, 11: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, 16:55

Re: TagMe! Skript, Fotos markieren mit eigenen Stichworten

Beitragvon ravler » 05.11.2011, 17: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, 16:54
Kamera(s): Canon Digital Ixus 100 is

Re: TagMe! Skript, Fotos markieren mit eigenen Stichworten

Beitragvon CHDKLover » 05.11.2011, 18: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, 19:25
Wohnort: Dresden
Kamera(s): a610 100e

Re: TagMe! Skript, Fotos markieren mit eigenen Stichworten

Beitragvon Joedi » 06.04.2022, 12:28

posting.php?mode=reply&f=7&t=1555# ...Jahre später....
Hallo,
ich möchte ein Anwendungsbeispiel für stift's EXIFModul.lua teilen. Mit der unten angegebenen Funktion user_comment_to_exif(text) kann man z.B. den Namen des gerade für eine Aufnahme benutzten Skripts, oder z.B. auch überlange Belichtungszeiten, die bei jpeg ja nicht richtig in exif abgebildet werden, in den exif-Daten "verewigen". Näheres und Erfahrungen damit siehe Kommentare im Skript.
Gruss von joedi

Code: Alles auswählen
--[[
>>> exifuscom.lua <<<
   This is a 2022 completely stripped-down by 'joedi' version
   of the excellently good (and nicely commented!)
   --- TagMe.lua - CHDK script ----
   by Author: Stefan Dittforth, (stift at email.de) of 2009
       
   The below function >>>>>user_comment_to_exif(text)<<<<<
   writes one single string into the image's user comment exif field
]]
 

function user_comment_to_exif(text)
-- some comments from the original:
-- Load EXIF Modul
-- The EXIF modul contains the functions required
-- to determine the position of the
-- EXIF tag UserComment within a JPEG image,
-- and for writing a new text to the tag.
-- The file EXIFModul.lua is expected in the same
-- directory as the TagMe.lua script (i.e. the calling script)
   require "EXIFModule"
   local P = JPEGImage -- JPEGImage definition in modul EXIFModul.lua
-- strongly simplified from the original, treating only the most recent
-- image file: find last img's path and name (see chdk-Handbook 1.5 p. 121)
   lastfn=string.format("%s/IMG_%04d.JPG",get_image_dir(),get_exp_count())
   print(lastfn)  --for debug                       
-- write to that image's exif header now:
   P:new(lastfn)
   P:SetUserComment(text)
end

-- Main pgm, only for testing the above function -----

require "EXIFModule"
-- switch cam into rec mode
if (get_mode()~=0) then set_record(1) sleep(2000) end
print("startin'")
shoot()
print("1 img taken!")
-- as an example for the text we want to insert,
-- we take the name of this very prog script:
text=get_config_value(1054) -- <-- thanks to msl!
-- write its name 'text' into the exif user comment field now:
user_comment_to_exif(text)
-- to see the result, use an image viewer with good exif capabilities
-- n.b.:
-- some image display software does not show all exif fields as expected.
-- Under Linux, you can always >>>grep "text" imagefile.jpg<<< for a quick check,
-- or >>>cat imagefile.jpg | head <<< for a nasty ascii display,
-- or use >>>exiftool imagefile.jpg<<< to see the UserComment is there.
-- Mind this program modifies the original file. Always test with a copy first, to be sure all went well.
Joedi
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 16
Registriert: 17.02.2020, 22:02
Wohnort: MA/HD
Kamera(s): IXUS60, A470, A530, A570IS, A590IS, SX230, M10

Vorherige

Zurück zu Code-Ecke

Wer ist online?

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