FixFoto Skript-Grundlagen; kleinere Skripte

Status
Nicht offen für weitere Antworten.

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#1
Skripte sind kleine Programme, die, auf FixFoto bezogen, dessen Bearbeitungstools in einem wiederholbaren automatischen Ablauf aufrufen. Programmiert werden kann in 'Visual Basic Script' oder 'Java Script'.



Info zur Tabelle:
Kürzel in den Spalten IN und OUT:

IN: Typ der Variablen, die an die Funktion übergeben werden
OUT: Typ der Funktion selbst bzw. dessen, was sie zurückliefert
B = Boolean/Logikwert (true/false)
I = 4-Byte/32-Bit Integer/Ganzzahl
R = 8-Byte/64-Bit Real/Fließkommazahl
S = String/Zeichenkette

Eigenschaften
[TABLE]IN|OUT|FUNKTION|BESCHREIBUNG
-|I|FF_GetMajor()|Liefert FixFotos Versions-Nr. vor Komma
-|I|FF_GetMinor()|Liefert FixFotos Versions-Nr. nach Komma
-|I|FF_GetBuild()|Liefert FixFotos Betaversions-Build-Nr.
-|S|FF_GetFFPath()|Liefert FixFotos Arbeitsverzeichnis
S|B|FF_SetCurrentPath(pfad)|Default-Pfad 'pfad' einstellen
-|I|FF_GetImageCount|Liefert Anzahl in der Computer-Ansicht selektierter Bilder
I|S|FF_GetImageName(index)|Liefert Namen von Bild mit 'index'-Nr. (Bild 1: index = 0)
-|I|FF_GetImageWidth()|Liefert Bildbreite in Pixel
-|I|FF_GetImageHeight()|Liefert Bildhöhe in Pixel
-|B|FF_HasExif()|TRUE wenn Bild EXIF-Daten hat
S|S|FF_GetExifTag(tag)|Liefert Inhalt von EXIF-Tag 'tag', sofern vorhanden, z.Zt.: ImageDescription, Make, Model, Orientation, XResolution, YResolution, ResolutionUnit, Software, DateTime, DateTimeOriginal, DateTimeDigitized, Artist, Copyright1, Copyright2, ExposureTime, FNumber, ExposureProgram, ISOSpeedRatings, ShutterSpeedValue, ApertureValue, BrightnessValue, ExposureBiasValue, MaxApertureValue, SubjectDistance, MeteringMode, LightSource, Flash, FocalLength, ExposureIndex.
S|B|FF_GetExifTagAdvanced(tag)|Liefert Inhalt von EXIF-Tag 'tag', sofern vorhanden. ExposureTime = Belichtungszeit aus ExposureTime oder ShutterSpeedValue. FNumber = Blende aus FNumber oder ApertureValue. FocalLength = Brennweite mal Verlängerungsfaktor.
S,S|B|FF_SetExifTag(tag,wert)|Weist EXIF-Tag 'tag' 'wert' zu, Tags s. FF_GetExifTag
S,S,I,I,B|I|FF_GetTextWidth(text,groe,fett,krsv,ustr,schr)|Liefert Textbreite in Pixel. Texteigenschaften Größe 'groe' in Pixel (definiert Textblockhöhe inkl. Rand, bei negativem Wert Zeichenhöhe), Strichstärke 'fett' = 0 bis 1000, 400 ist normal, Schriftschnitt 'schr', kursiv 'krsv' ja/nein, unterstrichen 'ustr' ja/nein, Schriftschnitt 'schr'
S,S,I,I,B|I|FF_GetTextHeight(text,groe,fett,krsv,ustr,schr)|Liefert Texthöhe in Pixel. Texteigenschaften siehe FF_GetTextWidth
S,S|S|FF_GetControl(dia,strg)|Liefert Wert von Steuerelement 'strg' in Dialogfenster 'dia'
S,S,S|B|FF_SetControl(dia,strg,text)|Beschriftet Steuerelement 'strg' in Dialogfenster 'dia' mit 'text'. Ist Steuerelement 'strg' vom Typ COMBO und wird ein Eintrag zweimal definiert, wird er Default-Wert
S,S,I|B|FF_SetControlStyle(dia,strg,stil)|Definiert weitere Fenstereigenschaften des Steuerelements 'strg' in Dialogfenster 'dia'. Ist 'strg' leer, wird Fenster selbst verändert
-|I|FF_GetDPI(dpi)|Liefert dpi-Auflösung des aktuellen Bildes
I|I|FF_SetDPI(dpi)|Stellt dpi-Auflösung für Druck des aktuellen Bildes ein
I|-|FF_SetArea(links,oben,breit,hoch)|Beschränkt Bearbeitung auf Rechteckausschnitt, Eckpixel 'links' 'oben', 'breit' und 'hoch' in Pixel. Betrifft: FF_Sharp/Blur/Gamma/Saturation/AdjustRGB/WhiteBalance
I,I|I|FF_GetPixel(x,y)|Liefert RGB-Farbwert COLORREF von Pixel bei Koordinaten 'x', 'y'
I,I,I|-|FF_SetPixel(x,y,rgb)|Setzt RGB-Farbwert COLORREF von Pixel bei Koordinaten 'x', 'y'[/TABLE]
--------------
(Achtung: z.Zt. werden Dateien ohne Rückfrage überschrieben)
 
Zuletzt bearbeitet von einem Moderator:

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#2
Re: FixFoto Skript-Grundlagen

(Info zur Tabelle siehe oben)

Methoden, allgemein
[TABLE]IN|OUT |FUNKTION|BESCHREIBUNG
S|B|FF_LoadImage(name)|Lädt Bild 'name' zur Bearbeitung
S,I|B|FF_SaveImage (name,qualität)|Speichert aktuelles Bild unter 'name' mit JPEG-Güte 'qualität' (1-100, 0 = FixFoto-Einstellung)
S|B|FF_LoadThumb(name)|Lädt Vorschaubild 'name' aus EXIF-Daten zur Bearbeitung
S|B|FF_ImportExif(name)|Lädt EXIF-Daten aus Datei, 'name' wird um "_exif.bin" erweitert
S|B|FF_ExportExif(name)|Speichert EXIF-Daten in Datei, 'name' wird um "_exif.bin" erweitert
-|B|FF_LoadExif(name)|Lädt EXIF-Daten aus Bilddatei 'name'
-|B|FF_SaveExif(name)|Schreibt aktuelle EXIF-Daten in Bilddatei 'name' ohne Bildneukomprimierung
-|B|FF_KillExif()|Löscht aktuelle EXIF-Daten
-|I|FF_EnterColor()|Farbauswahldialog, gibt RGB-Wert COLORREF zurück
B,S|S|FF_EnterPath(root,titel)|Pfadauswahldialog, ist 'root' = false, wird Default-Verzeichnis von Computer-Ansicht verwendet
B,S|S|FF_EnterFileName (open,selection)|Dateiauswahldialog
B|-|FF_PushImage()|Kopiert aktuelles Bild auf LIFO-Stapel
B|-|FF_PopImage()|Ersetzt aktuelles Bild mit dem letzten vom LIFO-Stapel
S|-|FF_ErrorBreak(meldng)|Beendet Skriptabarbeitung und gibt 'meldng' aus
I,I|-|FF_SetProgress (fortgang,bereich)|Fortschrittsanzeige
I,I,S|-|FF_SetProgress (fortgang,bereich,text)|Fortschrittsanzeige mit Text
I|-|FF_Sleep(ms)|Verzögert um 'ms' Millisekunden
-|I|FF_CheckKey()|Prüft auf Tastendruck, liefert Taste
S,I,I|B|FF_AddDialog (dia,breite,hoehe)|Definiert Dialogfenster namens 'dia' in breite/hoehe, zeigt es nicht an, s. FF_ShowDialog
S|S|FF_ShowDialog(dia)|Zeigt Dialogfenster 'dia' an, liefert gedrückten Knopf, d.h. OK oder Abbrechen
S,S,S I,I,I,I|B|FF_AddControl (dia,strg,typ,li,ob,br,ho)|Fügt Dialogfenster 'dia' Steuerelement 'strg' vom Typ 'typ' hinzu. Typen: STATIC, EDIT, SLEDIT, BUTTON, IMAGE, BOOL, COLOR, GROUP, COMBO, FONT, LISTBOX, HSLIDER IMAGE akzeptiert Stack-Index für Bild, aktuelles =0, oder Pfad zu Bild
S,S|B|FF_ActivateControl (dia,strg)|Setzt Fokus auf Steuerelement 'strg' in Dialogfenster 'dia'
S,S,B|B|FF_EnableControl (dia,strg,stat)|Status 'stat' von Steuerelement 'strg' in Dialogfenster 'dia' de-/aktivieren
S,S,S|B|FF_SetControl buddy (dia,strg,el)|Ordnet Steuerelement 'strg' im Dialogfenster dia ein anderes Steuerelement 'el' welches automatisch bei Änderungen aktualisiert wird, z.B. von HSLIDER, LISTBOX oder COLOR genutzt.
S|B|FF_CloseDialog(dia)|Schließt Dialogfenster 'dia'
S,I|I|FF_MessageBox (prompt,typ)|Beleiht AfxMessageBox(), um Nachrichtenfenster zu öffnen
S|B|FF_CallScript(scr)|Ruft Skript 'scr' auf, Pfad nötig
S|-|FF_SetParam(par)|Übergibt Parameter 'par' an mit FF_CallScript gestartetes Skript, erhält Parameter 'par' aus Script zurück
-|B|FF_GetParam()|Übernimmt Parameter von aufrufendem Skript; erhält Werte aus aufgerufenem Script zurück
-|-|FF_Reload()|Bild im Arbeitspeicher wird auf FF-Arbeitsfläche geladen
s|B|FF_TextFromClipboard(tex)|Holt Text aus Zwischenablage[/TABLE]
---------
(Achtung: z.Zt. werden Dateien ohne Rückfrage überschrieben)
 
Zuletzt bearbeitet von einem Moderator:

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#3
Re: FixFoto Skript-Grundlagen

(Info zur Tabelle siehe oben)

Skripte können das geladene Bild nur verändern, wenn das Dialogresultat ungleich "" und ungleich "CANCEL" ist!

Methoden, Bildbearbeitung
[TABLE]IN |OUT |FUNKTION|BESCHREIBUNG
I,I,I,I B,I,I|-|FF_SetArea (li,ob,b,h,inv,tr,wz)|Setzt Rechteckmaske, d.h. Begrenzung der Funktionen WhiteBalance/Gamma/AdjustRGB/Saturation/ Sharp/Blur auf Pixel-Rechteck links-oben ('li, 'ob') mit Breite/Höhe ('b', 'h'). Aus mit 0,0,0,0. Auswahlumkehrung auf Bereich außerhalb Rechteck mit 'invers' = TRUE. Transparenz, d.h. Deckkraft der Maske mit 'tr' = 0 bis 255. Weichzeichnung des Rechteckrandes für stufenlosen Übergang mit 'wz' = 0 bis 64.
I,I,I,I I,I,I|B|FF_ExtendCanvas (li,re,ob,un,r,g,b)|Vergrößert Bild um links/rechts/oben/unten-Anzahl Pixel in Farbe rot/grün/blau
S,I|B|FF_RotateFile (name, winkel)|Dreht Bild in Datei 'name' verlustfrei um 'winkel' 90, 180,270 Grad
R,B|B|FF_Rotate (winkel,autocut)|Dreht Bild um 'winkel' Grad. Ist 'autocut' = TRUE, wird Bild danach auf kleinstmögliches Rechteck beschnitten
I,I,B|B|FF_Scale (breite,höhe,verhältnis)|Schnelle Bildgrößenänderung; ist 'verhältnis' = true bleibt Seitenverhältnis dabei erhalten
I,I,B|B|FF_HQScale (breite,höhe,verhältnis)|Hochwertige Bildgrößenänderung, 'verhältnis' s.o.
I,I,I,B|B|FF_ILScale (br,ho,filt,verhältnis)|Bildgrößenänderung mit wählbarem Verfahren/Filter, 'verhältnis' s.o.; filt = 0: Nearest Neighbour, 1: Linear, 2: BiLinear, 3: Box, 4: Triangle, 5: Bell, 6: BSpline (BiCubic), 7: Lanczos3, 8: Mitchel
I,I,I|B|FF_WhiteBalance(r,g,b)|Weißabgleich, Werte RGB-Kanäle ändern als Differenz von -255 bis 255
R|B|FF_Gamma(gamma)|Gammakorrektur, 'gamma' = 0.2 bis 5.0
-|B|FF_AutoContrast()|Kontrastspreizung auf Maximum, Tonwerte 0 bis 255
R,R,R|B|FF_AdjustRGB(r,g,b)|Werte RGB-Kanäle verändern, 0.0 bis 2.0; r = g = b entspricht Helligkeit
R|B|FF_Saturation(saettig)|Farbsättigung, 'saettig' = -4.0 bis 4.0, 0.0 = Graustufen
I,I,I,I|B|FF_Crop(li,ob,b,h)|Bildausschnitt von Eckpixel 'links' 'oben', 'breit' und 'hoch' in Pixel)
I|B|FF_Xe847(proz)|Xe847-Algorithmus, 'proz' = 0%...100%
I|B|FF_Sharp(wert)|Schärfen mit Unscharf maskieren, 'wert' = 0 bis 192
I|B|FF_Blur(radius)|Weichzeichnen mit 'radius' = 1 bis 32
S|B|FF_SwapRGB(rgb)|RGB-Kanäle vertauschen, 'rgb'="R"+"G"+"B" in beliebiger Folge
I|B|FF_TextAlign(bez)|Definiert Bezugspunkt 'bez' für Textausgabe. Werte für 'bez: 0=links, 2=oben, 4=rechts, 6=zentriert, 8=unten, 24=Basisline
S,I,I,I I,I,B B,S,I|B|FF_DrawText(text,x,y, groe,lage,fett,krsv, ustr,schr,rgb)|Schreibt Text 'text' mit Position 'x'/'y' für linkes oberes Eck in aktuelles Bild. Texteigenschaften: Farbe 'rgb', Größe 'groe' in Pixel (definiert Textblockhöhe inkl. Rand, bei negativem Wert Zeichenhöhe), Drehwinkel 'lage' im Uhrzeigersinn in 1/10°, Strichstärke 'fett' = 0 bis 1000, 400 ist normal, kursiv 'krsv' ja/nein, unterstrichen 'ustr' ja/nein, Schriftschnitt 'schr'[/TABLE]

(Achtung: z.Zt. werden Dateien ohne Rückfrage überschrieben)
 
Zuletzt bearbeitet von einem Moderator:

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#4
Re: FixFoto Skript-Grundlagen

(Info zur Tabelle siehe oben)

Eigenschaften und Methoden, Drucken
[TABLE]IN|OUT|FUNKTION|BESCHREIBUNG
-|B|FF_SelectPrinter()|Öffnet Dialog für Drucker-Auswahl und -Einstellung. Erforderlich vor allen anderen Drucker-Funktionen.
-|I|FF_GetPrinTABLEPixelX|Breite Druckbereich in Pixel.
-|I|FF_GetPrinTABLEPixelY|Höhe Druckbereich in Pixel.
-|I|FF_GetPrinTABLEmmX|Breite Druckbereich in mm.
-|I|FF_GetPrinTABLEmmY|Höhe Druckbereich in mm.
-|I|FF_GetPrinterPixelperInchX|Horizontale Druckerauflösung in dpi
-|I|FF_GetPrinterPixelperInchX|Vertikale Druckerauflösung in dpi
-|I|FF_GetPrinterPageX|Papierbreite in Pixel
-|I|FF_GetPrinterPageY|Papierhöhe in Pixel
-|I|FF_GetPrinTABLEOffsetX|Druckbereich Randabstand horizontal in Pixel.
-|I|FF_GetPrinTABLEOffsetX|Druckbereich Randabstand vertikal in Pixel.
-|B|FF_StartPrintPage()|Leitet Ausdruck einer Seite ein, druckt noch nicht.
I,I,I,I|B|FF_PrintImage(li,ob,b,h)|Druckparameter für geladenes Bild: an Position links-oben ('li', 'ob') in Breite/Höhe ('b', 'h').
-|B|FF_EndPrintPage()|Schließt Druckeinleitung ab, startet Drucker und druckt aus
S,I,I,I,I,I,B,B,S,I|B|FF_PrintText(text,x,y,groe,lage,fett,krsv,ustr,schr,rgb)|Druckt Text 'text' mit Position 'x'/'y' für linkes oberes Eck in aktuelles Bild. Details siehe FF_DrawText
S,S,I,I,B|I|FF_GetPrintTextWidth(text,groe,fett,krsv,ustr,schr)|Liefert Textbreite in Pixel. Details siehe FF_GetTextWidth
S,S,I,I,B|B|FF_GetPrintTextHeight(text,groe,fett,krsv,ustr,schr)|Liefert Texthöhe in Pixel. Details siehe FF_GetTextWidth[/TABLE]


(Achtung: z.Zt. werden Dateien ohne Rückfrage überschrieben)
 
Zuletzt bearbeitet von einem Moderator:

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#5
Re: FixFoto Skript-Grundlagen

Skripte sind kleine Programme, die, auf FixFoto bezogen, dessen Bearbeitungstools in einem wiederholbaren automatischen Ablauf aufrufen. Programmiert werden kann in 'Visual Basic Script' oder 'Java Script'.

Skript-Editier-Tips:

1. Falls Postings nicht so aussehen wie gewünscht, kann jeder 'Eigentümer' sie auch nachträglich bearbeiten.

2. Für das Einfügen von Programmlistings empfiehlt es sich die Posting-Knöpfe 'Vorformatierter Text' und 'Schriftgröße' zu verwenden und zwar immer zusammen. Unsere Standardschriftgröße ist 2. Für Listings wird als Default der Courier Schriftschnitt verwendet: Besser dabei belassen!
Das sieht dann so aus:
[ pre ][ size=2 ]
...
[ /size=2 ][ /pre ]

3. Im Prinzip könnte auch der Knopf 'Code einfügen' verwendet werden, der sogar eigentlich für Programmcode gedacht ist. Aber damit sind leider keinerlei programmcodeinterne Textformatierungen möglich!
 

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#6
Re: FixFoto Skript-Grundlagen

Beispiel: Rahmen nach Wunsch programmieren:
PHP:
dim c,i,j 
dim imagenum 
dim name 
imagenum = FF_GetImageCount 
for i = 0 to imagenum - 1 
 name = FF_GetImageName(i) 
 call FF_LoadImage(name) 
 c = 255 
 for j = 1 to 64 
  call FF_ExtendCanvas(1,1,1,1,c,c,c)
  c = c - 3 
 next 
 call FF_SaveImage(name,0) 
next
<hr />
Beispiel: Rahmen 'Buttonize' : erzeugt Knöpfe

PHP:
option explicit
dim i,j,f,imagecount,width,height,size
dim fso,path,dir,file,ext
set fso = CreateObject("Scripting.FileSystemObject")
size = InputBox("Breite des Rahmens")
imagecount = FF_GetImageCount
for i=0 to imagecount-1
 path = FF_GetImageName(i)
 FF_LoadImage path
 width = FF_GetImageWidth()
 height = FF_GetImageHeight()
 for j=0 to size-1
  f = ((size-1) - j) / (size-1) * 127
  FF_SetArea j,j,width-j*2,1
  FF_WhiteBalance f,f,f
  FF_SetArea j,j+1,1,height-j*2-1
  FF_WhiteBalance f,f,f
  f = -f
  FF_SetArea width-j-1,j+1,1,height-j*2-1
  FF_WhiteBalance f,f,f
  FF_SetArea j,height-j-1,width-j*2,1
  FF_WhiteBalance f,f,f
 next
 SplitPath path,dir,file,ext
 FF_SaveImage dir &amp; "Button_" &amp; file &amp; ext,0
 FF_SetProgress i+1,imagecount
next

' liefert Verzeichnis mit abschliessendem Backslash,
' Dateinamen und Erweiterung mit einleitendem Punkt
sub SplitPath(path, byref dir, byref file, byref ext)
 dir = fso.GetParentFolderName(path) &amp; "\"
 file = fso.GetBaseName(path)
 ext = "." &amp; fso.GetExtensionName(path)
end sub
<hr />
Beispiel: Unscharfer Rahmen

PHP:
option explicit
dim i,j,f,imagecount,width,height,size
dim fso,path,dir,file,ext
set fso = CreateObject("Scripting.FileSystemObject")
size = InputBox("Breite des Rahmens")
imagecount = FF_GetImageCount
for i=0 to imagecount-1
path = FF_GetImageName(i)
FF_LoadImage path
width = FF_GetImageWidth()
height = FF_GetImageHeight()
FF_SetArea 0,0,width,size
FF_Blur 20
FF_SetArea 0,height-size,width,size
FF_Blur 20
FF_SetArea 0,0,size,height
FF_Blur 20
FF_SetArea width-size,0,size,height
FF_Blur 20

FF_SetArea size,size,width-size*2,1
FF_WhiteBalance -255,-255,-255
FF_SetArea size,height-size,width-size*2,1
FF_WhiteBalance -255,-255,-255
FF_SetArea size,size,1,height-size*2
FF_WhiteBalance -255,-255,-255
FF_SetArea width-size,size,1,height-size*2
FF_WhiteBalance -255,-255,-255

SplitPath path,dir,file,ext
FF_SaveImage dir &amp; "Blur_" &amp; file &amp; ext,0
FF_SetProgress i+1,imagecount
next

' liefert Verzeichnis mit abschliessendem Backslash,
' Dateinamen und Erweiterung mit einleitendem Punkt
sub SplitPath(path, byref dir, byref file, byref ext)
dir = fso.GetParentFolderName(path) &amp; "\"
file = fso.GetBaseName(path)
ext = "." &amp; fso.GetExtensionName(path)
end sub
 

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#7
Re: FixFoto Skript-Grundlagen

Beispiel: Dateinamen und Brennweite in eine Datei schreiben:

Code:
dim [color=Green]i[/color] 
dim [color=Green]imagenum[/color] 
dim [color=Green]name[/color] 
dim [color=Green]fso[/color] 
dim [color=Green]file[/color]
 
set [color=Green]fso[/color] = CreateObject("Scripting.FileSystemObject") 
set [color=Green]file[/color] = fso.CreateTextFile("c:\temp\test.txt",TRUE) 
[color=Green]imagenum[/color] = [color=Blue]FF_GetImageCount[/color] 
for [color=Green]i[/color] = 0 to [color=Green]imagenum[/color] - 1 
 [color=Green]name[/color] = [color=Blue]FF_GetImageName([/color][color=Green]i[/color][color=blue])[/color] 
 call [color=Blue]FF_LoadImage([/color][color=Green]name[/color][color=Blue])[/color] 
 file.Write([color=Green]name[/color]) 
 file.Write(": ") 
 file.WriteLine([color=Blue]FF_GetExifFocal()[/color]) 
next 
file.Close()
 

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#8
Ablauf-Beispiel: EXIF-Daten erhalten bei Fremdprogrammverwendung
Code:
... 
[color=Green]name[/color] = [color=Blue]FF_GetImageName([/color]0[color=Blue])[/color] 
call [color=Blue]FF_LoadImage([/color][color=Green]name[/color][color=Blue])[/color] 
call [color=Blue]FF_ExportExif([/color]"temp"[color=Blue])[/color] 
call [color=Blue]FF_SaveImage([/color]"temp.bmp",0[color=Blue])[/color] 
[color=Purple]' externe Bearbeitung("temp.bmp")[/color] 
call [color=Blue]FF_LoadImage([/color]"temp.bmp"[color=Blue])[/color] 
call [color=Blue]FF_ImportExif([/color]"temp"[color=Blue])[/color] 
call [color=Blue]FF_SaveImage([/color][color=Green]name[/color],0[color=Blue])[/color]
...
 

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#9
Beispiel: Bilder mischen

Code:
[color=Blue]option explicit 
dim imagecount,i,w,h,x,y 
dim co,r,g,b,v 
dim rarray(),garray(),barray() 
 
imagecount = FF_GetImageCount 
w = 0 
h = 0 
for i=0 to imagecount-1 
 FF_LoadImage FF_GetImageName(i) 
 if w = 0 then 
  w = FF_GetImageWidth() 
 else 
  if w <> FF_GetImageWidth() then 
  FF_ErrorBreak "alle Bilder müssen die gleiche Größe haben" 
  end if 
 end if 
 if h = 0 then 
  h = FF_GetImageHeight() 
[/color][color=Purple]' beim ersten Bild Arrays definieren und Bild einlesen[/color] 
[color=Blue]  redim rarray(w,h) 
  redim garray(w,h) 
  redim barray(w,h) 
  for y=0 to h-1 
   for x=0 to w-1 
    co = FF_GetPixel(x,y) 
    r = (co \ 65536) and 255 
    g = (co \ 256) and 255 
    b = co and 255 
    rarray(x,y) = r 
    garray(x,y) = g 
    barray(x,y) = b 
   next 
  FF_SetProgress y,h-1 
  next 
 else 
  if h <> FF_GetImageHeight() then 
   FF_ErrorBreak "alle Bilder müssen die gleiche Größe haben" 
  end if 
[/color][color=Purple]' alle Folgebilder mischen[/color] 
[color=Blue]  for y=0 to h-1 
   for x=0 to w-1 
    co = FF_GetPixel(x,y) 
    r = (co \ 65536) and 255 
    g = (co \ 256) and 255 
    b = co and 255 
    v = 255 - r 
    v = 255 - (v * v) \ 255 
    rarray(x,y) = rarray(x,y) + v 
    v = 255 - g 
    v = 255 - (v * v) \ 255 
    garray(x,y) = garray(x,y) + v 
    v = 255 - b 
    v = 255 - (v * v) \ 255 
    barray(x,y) = barray(x,y) + v 
   next 
  FF_SetProgress y,h-1 
  next 
 end if 
next 
 
[/color][color=Purple]' Bild speichern[/color] 
[color=Blue]for y=0 to h-1 
 for x=0 to w-1 
  co = (rarray(x,y) \ imagecount) * 65536 + (garray(x,y) \ imagecount) * 256 + (barray(x,y) \ imagecount) 
  FF_SetPixel x,y,co 
 next 
 FF_SetProgress y,h-1 
next 
FF_SaveImage "c:\temp\mixtest.jpg",0[/color]
 

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#10
Beispiel: Transparente Schrift einfügen
Code:
[color=Blue]
var w=FF_GetImageWidth();
var h=FF_GetImageHeight();
FF_AreaFillRect(0,0,w,h,64);
FF_DrawText("transparenter Text",10,10,40,0,600,false,false,"Arial",255);
FF_Reload(); 
[/color]
 

ralfeberle

FF-Team
Mitarbeiter
Dabei seit
10.07.02
Beiträge
11.289
Trophäen
10*15!4{*}1{!}
#11
AW: FixFoto Skript-Grundlagen; kleinere Skripte

Hallo!

Kleine Wasserzeichen mit Transparenz einfügen:

Code:
var h = FF_GetImageHeight() / 30;
var t = "Copyright";
var ixs = FF_GetImageWidth();
var iys = FF_GetImageHeight();
var xs = FF_GetTextWidth(t,h,200,false,false,"Tahoma");
var ys = FF_GetTextHeight(t,h,200,false,false,"Tahoma");
var	x=xs/2,y=ys;
FF_AreaFillRect(0,0,ixs,iys,64);
for(;;)
	{
	FF_DrawText(t,x,y,h,0,200,false,false,"Tahoma",0);
	x += xs * 3 / 2;
	if(x > ixs) {x -= ixs; y += ys*2;}
	if(y > iys) break;
	}
FF_Reload();
Gruß,

Ralf
 
Status
Nicht offen für weitere Antworten.
Oben