Skriptzugriff auf Bilderlisten

JKS

FF-Team
Dabei seit
06.06.02
Beiträge
6.712
#1
in V2.76 B38.

VT_BOOL FF_IListCreate(VT_BSTR listname) erzeugt eine virtuelle Liste.
VT_BOOL FF_IListDelete(VT_BSTR listname) löscht eine virtuelle Liste.
VT_I4 FF_IListGetCount(VT_BSTR listname) liefert die Anzahl Bilder in der Liste.
VT_BSTR FF_IListGetFile(VT_BSTR listname, VT_I4 index) liefert einen Bildnamen.
VT_BOOL FF_IListInsertFile(VT_BSTR listname, VT_BSTR filename, VT_I4 index) fügt ein Bild in die Liste ein (index == -1 : am Ende).
VT_BOOL FF_IListSave(VT_BSTR listname) speichert die Liste.

Dieses Script erzeugt aus allen selektierten Bildern eine Liste 'TestListe' die alle mit Blitz aufgenommenen Fotos enthält:
Code:
var liste="TestListe";
var   i,cnt,file;
FF_IListDelete(liste);
FF_IListCreate(liste);
cnt = FF_GetImageCount();
for(i=0; i<cnt; i++)
   {
   file = FF_GetImageName(i);
   if(!FF_LoadExif(file)) continue;
   if(parseInt(FF_GetExifTag("Flash")) & 1)
      FF_IListInsertFile(liste,file,-1);
   }
FF_IListSave(liste);
 

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#2
Hallo!

Wahnsinn, da tun sich ja unglaubliche Bildselektionsmöglichkeiten auf!

Gruß,

Ralf
 

hhoefling

Mitglied
Dabei seit
02.01.04
Beiträge
3.994
Standort
NRW/Ruhrgebiet
Trophäen
4! 2*
#3
Ja sehr gut!
Und vieleicht können wir demächst auch die nachbearbeiteten Bilder raussuchen lassen,
wenn denn mal die Bearbeitungshistory im Kommentar steht 8)
 

JKS

FF-Team
Dabei seit
06.06.02
Beiträge
6.712
#4
Noch ein Beispielskript.
Aus den selektierten Bildern werden Listen nach Blende angelegt (kumulativ).
Ein Aufruf ohne selektierte Bilder löscht alle Blendenlisten (Blende_x.x).

Code:
//FFSubmenu=Exif
//FFName=Blendenliste

var   MB_YESNO=4,IDYES=6
var   i,cnt=FF_GetImageCount();
var   file,bl,dir,dirs="";
if(0 == cnt)   // Blendenverzeichnisse löschen?
   {
   if(FF_MessageBox("Blendenlisten löschen?",MB_YESNO) == IDYES)
      {
      for(i=0; i<=30; i++)
         {
         for(cnt=0; cnt<=9; cnt++)
            {
            dir = "Blende_" + i + "." + cnt;
            if(FF_IListDelete(dir)) FF_IListSave(dir);
            }
         }
      }
   }
else
   {
   for(i=0; i<cnt; i++)
      {
      FF_SetProgress(i,cnt-1);
      file = FF_GetImageName(i);
      if(!FF_LoadExif(file)) continue;
      bl = FF_GetExifTagAdvanced("FNumber");
      if(bl =="") continue;
      dir = "Blende_" + bl;
      if(dirs.indexOf(dir) < 0)
         {
         FF_IListCreate(dir);
         if(dirs != "") dirs += ",";
         dirs += dir;
         }
      FF_IListInsertFile(dir,file,-1);
      }
   dir = dirs.split(",");
   for(i=0; i<dir.length; i++) FF_IListSave(dir[i]);
   }
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
5.099
Standort
Anzing BY
#5
Hallo JK,

ich weiß, ich bin wieder unverschämt ;D :

Bitte um folgende Erweiterungen:
VT_BOOL FF_IListDeleteFile(VT_BSTR listname, VT_BSTR filename)
VT_BOOL FF_IListDeleteIndex(VT_BSTR listname, VT_I4 index)

sowie die grafische Umsetzung in den Script-Dialogen
Beispiel:

FF_AddControl sDlg, lstname, "ILIST", x, y, b, h

Mit FF_SetControl und FF_GetControl kann man Listen austauschen bzw. den Namen entnehmen. Steuerung der Liste würde über die Bilderlisten-Routinen erfolgen. Bei Auswahl und bei Doppelklick müsste der Dialog verlassen werden, um Änderungen im Dialog herbeizuführen.

Schönen Gruß,

Werner.
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
5.099
Standort
Anzing BY
#6
Kann man eigentlich schon virtuelle Bilderlisten erstellen, d. h. ohne Kopieren von Bildern in Verzeichnissen. Bin vielleicht nicht auf dem aktuellen Stand der Dinge.

Schönen Gruß,

Werner.
 

JKS

FF-Team
Dabei seit
06.06.02
Beiträge
6.712
#7
W. hat gesagt.:
Kann man eigentlich schon virtuelle Bilderlisten erstellen, d. h. ohne Kopieren von Bildern in Verzeichnissen.
Klar, der wesentliche Teil der Bilderlisten. Sogar schon in der Anleitung enthalten ;D
 

JKS

FF-Team
Dabei seit
06.06.02
Beiträge
6.712
#8
W. hat gesagt.:
VT_BOOL FF_IListDeleteFile(VT_BSTR listname, VT_BSTR filename)
VT_BOOL FF_IListDeleteIndex(VT_BSTR listname, VT_I4 index)
in V2.76 B40.

Irgendeine Kleinigkeit habe ich, glaub' ich, noch vergessen... ::)
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
5.099
Standort
Anzing BY
#10
Hallo Joachim,

da ich die Funktionalität gerade etwas erforscht habe, wäre folgende Funktion noch von Nutzen.

VT_BOOL FF_IListSort(VT_BSTR listname, VT_I4Sort)
VT_BSTR FF_IGetLists() Listen separiert mit CRLF

Ob man die ausführbaren Funktionen wie eMail, Diashow, CD-Brennen etc. noch integrieren könnte, darüber entscheidet der Aufwand.

Und: Die Hilfeeinträge der Del-Funktionen sind noch nicht integriert. (B40)

Sollte alles umgesetzt werden können, fürchte ich, braucht man für das Tool einen Waffenschein 8) ;D .

Schönen Gruß,

Werner.
 

m.s

FF-Team
Mitarbeiter
Dabei seit
19.09.02
Beiträge
11.275
#11
hallo werner,

Und: Die Hilfeeinträge der Del-Funktionen sind noch nicht integriert. (B40)
keine angst, spätestens in der nächsten beta.
ich bekomme die änderungen ja auch erst mit, wenn die beta draussen ist

grüsse
micha
 

JKS

FF-Team
Dabei seit
06.06.02
Beiträge
6.712
#12
V2.76 B41:
VT_BSTR FF_IListGetLists() liefert alle virtuellen Listen in einem String, mit CRLF getrennt.
VT_EMPTY FF_IListSort(VT_BSTR name, VT_BSTR type) Sortiert die Liste. 0=name aufsteigend, 1=Name absteigend, 2=Datum aufsteigend, 3=Datum absteigend.
 
Oben