====== Boostskripte ====== ===== 1. Allgemeines ===== * Boostskripte müssen in JScript geschrieben sein und liegen im Pfad "\Batchscript\Boost". * Die letzte Zeile eines Boost-Skripts muss unbedingt eine Leerzeile sein, anderenfalls tritt ein Fehler auf. * Boostscripte sind ja keine "vollwertigen" Scripte. Sie enthalten regelmäßig nur wenige Zeilen die in das von FF erzeugt Stapel-Script eingebunden werden. Das hat u. A. zur Folge, dass Boostskripte keine Funktionen enthalten können, da sie selbst nur Bestandteile der Funkion "main()" im Stapelskript werden. \\ ===== 2. Variablen ===== Es gibt einige Variablen, u.a. damit die Stapelverarbeitung erkennt, ob das Bild verlustfrei oder verlustbehaftet verarbeitet werden kann.\\ Wann immer das Bild geändert wurde, muss die entsprechende Variable gesetzt werden, sonst erfolgt keine Übernahme.\\ | **Variable**\\ | **Erläuterung**\\ | **Verlustfreie Bearbeitung?**\\ | | srcname\\ | Der originale Name des Bildes (darf nicht verändert werden)\\ | \\ | | tmpname\\ | Der temporäre Name des Bildes (darf verändert werden)\\ | \\ | | image_modified = 1;\\ | Das Bild im Speicher ist verändert\\ | nein\\ | | file_modified = 1;\\ | Die Bilddatei ist verändert\\ | nein\\ | | exif_modified = 1;\\ | Die Exif-Daten sind verändert\\ | ja\\ | | iptc_modified = 1;\\ | Die IPTC-Daten sind verändert\\ | ja\\ | | geo_modified = 1;\\ | Das Bild ist in seiner Geometrie verändert\\ | nein\\ | | file_overwrite = 0\\ | Wenn gleichnamiges Bild schon existiert\\ 0 = vor Überschreiben nachfragen (Standard)\\ 1 = nicht nachfragen\\ | \\ | | dstname\\ | Pfad und Dateiname, unter dem das bearbeitet Bild gespeichert wird\\ | \\ | Weitere Variablen können ggf. nach der Analyse der Dateien //Header.js// und //Footer.js// im Ordner BatchScript\ ermittelt werden.\\ \\ Die temporäre Kopie des Bildes (Variable //tmpname//) wird im allgemeinen TEMP-Verzeichnis abgelegt, das mit dem File Script Objekt ermittelt werden kann:\\ Dim fso Set fso = CreateObject("Scripting.FileSystemObject") sTempPath = fso.GetSpecialFolder(2) Die Variable //scriptmode// informiert über den Zustand, in dem die Stapelverarbeitung sich beim Aufruf des Boostskriptes befindet. * 0 = Erzeugung der kleinen Vorschau * 1 = Erzeugung der großen Vorschau (In diesem Zustand können z. B. Voreinstellungen vorgenommen werden.) * 2 = Stapelverarbeitung läuft (Dieser Zustand wird auch durch "running = true" repräsentiert) ===== 3. Indirekter Scriptaufruf ===== Aus einem Boostscript heraus können mittels //FF_CallScript// weitere Scripte aufgerufen werden, die dann auch in VBScript erstellt sein können. Mit //FF_SetParam// bzw. //FF_GetParam// ist dabei eine [[/Parameter%C3%BCbergabe|Parameterübergabe]] zwischen Boostscript und dem externen Script möglich.\\ if(running) // Stapelverarbeitung läuft gerade ab { var sp=FF_getParam(); var pa=FF_GetFFPathEx(5) + "\\exifschrift.vbs"; // externes Script wird festgelegt FF_SetParam(""); FF_CallScript(pa); // externes Script wird aufgerufen FF_SetParam(sp); image_modified = true; // Meldung an die Stapelverarbeitung, dass Bild verändert wurde } **Beispiel 1** Stellt den Benutzerdialog zur Verfügung //FFName=Benutzerdialog FF_UserDialog("",0) image_modified = 1; geo_modified = 1; **Beispiel 2** Lädt die Bilder auf den Webspace, der in den Optionen des Speichern-unter-Dialogs eingestellt ist. Ein Ordner auf der Festplatte muss aber trotzdem angegeben werden. In dieses Verzeichnis wird außerdem eine Textdatei abgelegt, die sämtliche Pfade der hochgeladenen Dateien enthält. //FFName=FTP-Upload if(scriptmode != 2) { FF_WriteProfile("Upload", "Existfile", "1"); } if(running) { if(FF_SaveImage(dstname,jpeg_qual)) { var textpath = fso.GetParentFolderName(dstname) + "\\UploadedFiles.txt"; var kenner = FF_GetProfile("Upload","Existfile"); if (kenner == 1) { if (fso.FileExists(textpath)) { fso.DeleteFile(textpath); } FF_WriteProfile("Upload", "Existfile", "0") } var oShell = new ActiveXObject("WScript.Shell"); // Lies mal die FTP-Einstellungen aus der Registry aus var ftpserver = oShell.RegRead("HKCU\\SOFTWARE\\Joachim Koopmann Software\\FixFoto\\Options\\FTPServer"); var ftppath = oShell.RegRead("HKCU\\SOFTWARE\\Joachim Koopmann Software\\FixFoto\\Options\\FTPPath"); var dlpath = oShell.RegRead("HKCU\\SOFTWARE\\Joachim Koopmann Software\\FixFoto\\Options\\FTPDPath"); var ftpuser = oShell.RegRead("HKCU\\SOFTWARE\\Joachim Koopmann Software\\FixFoto\\Options\\FTPUser"); var ftppass = oShell.RegRead("HKCU\\SOFTWARE\\Joachim Koopmann Software\\FixFoto\\Options\\FTPPwd"); var ftppassive = oShell.RegRead("HKCU\\SOFTWARE\\Joachim Koopmann Software\\FixFoto\\Options\\PassiveFTP"); //Uploadpfad der Bilder var dpath = SplitPath(dstname); dpath = dlpath + "/" + dpath.file + dpath.ext; //Bild speichern und hochladen if(!FF_SaveFTP(dstname, ftpserver, ftppath, ftpuser, ftppass, 1)) FF_MessageBox("Fehler beim FTP-Upload",0); //Text-Datei schreiben (Zeile anhängen) if(!fso.FileExists(textpath)) fso.CreateTextFile(textpath, true); var f = fso.GetFile(textpath); var ts = f.OpenAsTextStream(8); ts.WriteLine(dpath); ts.Close(); fso.DeleteFile(dstname); } // } ===== 4. Bildvarianten im Stapel erzeugen ===== Normalerweise wird eine Stapelverarbeitung auf jedes der ausgewählten Bilder genau einmal angewandt, das Ergebnis wird gespeichert. D. h. es gibt für jedes Bild genau ein Resultat. Mithilfe einiger Booststripte könne jedoch in einem Rutsch mehrerer Varianten von ein und demselben Bild erzeugt werden. In einem zweiten Arbeitsschritt können die erstellten Varianten dann z.B. verglichen und das jeweils bessere Bild kann ausgewählt werden.\\ \\ Allgemein hat eine solche Stapelverarbeitung folgende Struktur:\\ {{::stapelvarianten.png?direct|}} // FFSubmenu=Boostscripts // FFName=push if(running) { FF_PushImage(); } //Module push.js ende // FFSubmenu=Boostscripts // FFName=Zwischenspeichern if(running) { if(0 != file_size) jpeg_qual = FF_GetJPGCompression(file_size); FF_SaveImage(dstname,jpeg_qual); } //Module Zwischenspeichern.js ende // FFSubmenu=Boostscripts // FFName=pop if(running) { FF_PopImage(); } //Module pop.js ende