geplantes Script zum Einfügen von Exif-Informationen

  • Ersteller Ersteller m.s
  • Erstellt am Erstellt am
Also ich habe mit dem Script angefangen, aber es treten ein paar Probleme auf.

@JKS

Code:
FF_SetExifTag("ExposureTime",  "0.125")
FF_SetExifTag geht ja nur mit String als Parameter, da kann ich mir helfen in dem ich
Code:
var x=1/8;    // 0.125
FF_SetExifTag("ExposureTime",  ""+x)
Aufrufe, somit explizite Umwandlung in String.


Aber die Routine nimmt keine Werte kleiner 1/1000 an und rundet ungemein!

Nach
Code:
FF_SetExifTag("ExposureTime",  "0.016667")    // 1/60
liefert
Code:
FF_GetExifTag("ExposureTime")
dann 0.017000 zurück.

Werte der Kamera, z.B. 1/60 liefert FF_GetExifTag() (richtig?) als 0.016667


Aussderm hadere ich immer noch mit der Datumseingabe.......
 
Tja, da hat der Heinz wohl recht:

sh = new ActiveXObject("WScript.Shell");      
var x = 0.123456789;
sh.popup(x+" --> "+x.toString());       // Nach dem Casten ist die Welt noch in Ordnung
FF_SetExifTag("ExposureTime",x.toString());
sh.Popup(FF_GetExifTag("ExposureTime"));   // und hier wurde Belichtungszeit veruntreut !

@ Heinz

x.toString() -> so gehts hübscher ;).

@ Joachim

Du massakrierst da in Deinen finsteren Abgründen offensichtlich wertvolle Belichtungszeit :).

Gruß Jochen
 
Das bringt der Komfort in Double statt Rational arbeiten zu können, so mit sich.
 
Mal abgesehen davon, daß vermutlich auf der Welt außer einer Handvoll Inschinöre niemanden der Präzisionsstatus der 3.Nachkommastelle der Belichtungszeit seiner Knipse interessieren dürfte, wäre es doch schön, wenn FF die Form wahren und die abgelieferte Belichtungszeit unkastriert wieder herausrücken würde. Was sollen sonst die Leute denken ...
 
Man reiche mir die optimierten Codezeilen zur Wandlung eines Doubles in ganzzahlige Zähler & Teiler (je 32 Bit) ohne Genauigkeitsverlust.
 
Hallo!

Könnte darin auch begründet liegen, weshalb lange Belichtungszeiten - also über einer Minute so gigantische Ausreißer produzieren? Für die Wandlung: reicht nicht die Multiplikation mit einer großen 10er-Potenz, die Stellen zu erhalten?

Gruß,

Ralf
 
Hallo JKS
Die neue Routine verhält sich nicht ganz so wie erwartet

Code:
sh = new ActiveXObject("WScript.Shell");      

xx = new Array( 2,     1,     1/2,   1/15,    
               1/30,   1/60,  1/125,   
               1/250,  1/500, 1/1000, 
               1/2000, 1/4000 );
xt = new Array( "2","1","1/2", "1/15", 
               "1/30", "1/60", "1/125",
               "1/250","1/500","1/1000",
               "1/2000","1/4000");

for (x in xx )
{
 FF_SetExifTag("ExposureTime",xx[x].toString());
 sh.Popup("Soll:"+xt[x]+" ("+xx[x]+") Ist:"+FF_GetExifTag("ExposureTime"));
}

Liefert
Code:
Soll:2 (2) Ist:1.000000
Soll:1 (1) Ist:0.500000
Soll:1/2 (0.5) Ist:0.333333
Soll:1/15 (0.06666666666666666) Ist:0.062500
Soll:1/30 (0.03333333333333333) Ist:0.032258
Soll:1/60 (0.016666666666666666) Ist:0.016393
Soll:1/125 (0.008) Ist:0.007937
Soll:1/250 (0.004) Ist:0.003984
Soll:1/500 (0.002) Ist:0.001996
Soll:1/1000 (0.001) Ist:0.000999
Soll:1/2000 (0.0005) Ist:0.000500
Soll:1/4000 (0.00025) Ist:0.000250

Lediglich die beiden letzen Zeilen sind richtig (genau die die vorher gar nicht gingen) ::) ::)

wie wäre es mit einer alternativen in der FF_SetExifTag() Routine
z.B "1;60" als Parameter (zwei mit ";" getrennte Integer) statt "0.166667"
oder "2;0" statt "2.0"
dann brauchst du gar nicht mehr rechnen :) :)


EDIT
" oder "2;0" statt "2.0" " muss natürlich
" oder "2;1" statt "2.0" " heissen
 
V2.76 B74 Rev2: Schwere Funktion wieder entfernt, eigene Skalierung auf Maximum geändert.
 
Warum machst Du es nicht, wie Heinz vorgeschlagen hat? Scheint doch angesichts der internen Speicherung die vernünftigste Lösung zu sein.
 
Danke Joachim,
die B74.2 liefert

Code:
Soll:2 (2) Ist:2.000000
Soll:1 (1) Ist:1.000000
Soll:1/2 (0.5) Ist:0.500000
Soll:1/15 (0.06666666666666666) Ist:0.066667
Soll:1/30 (0.03333333333333333) Ist:0.033333
Soll:1/60 (0.016666666666666666) Ist:0.016667
Soll:1/125 (0.008) Ist:0.008000
Soll:1/250 (0.004) Ist:0.004000
Soll:1/500 (0.002) Ist:0.002000
Soll:1/1000 (0.001) Ist:0.001000
Soll:1/2000 (0.0005) Ist:0.000500
Soll:1/4000 (0.00025) Ist:0.000250
Das sieht schon besser aus.
 
Hallo Joachim (JKS)
Das Problem mit FF_SetExifTag("ExposureTime",x) ist nun Ok.

Ich habe aber noch eine andere Kleinigkeit gefunden.
Bei dem COMBO Control kann man durch zweimaliges setzen des gleichen Wertes das Default-Element bestimmen. z.b. die Combobox soll die folgenden Werte enthalten.
Code:
1/2000
1/1000
1/200
1/100
1/20
1/10

Wenn ich nun zweimal hintereinnander FF_SetControl () mit dem String "1/100" Aufrufe,
dann ist immer die zuerst stehende Zeile mit "1/1000" Selektiert.
Es wird somit beim suchen der Zeile nur mit der kürzeren Länge des zu setzenden Strings verglichen.

Da ich die eventuell schon vorhandenen EXIF-Werte im Dialog vorselktieren will, ist mir dies aufgefallen.

Edit
Aussedem kann der Benutzer den Eintrag "1/100" nicht wählen, es wird immer "1/1000" genommen.
 
Zurück
Oben