Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
name = FF_GetImageName(0)
call FF_LoadImage(name)
call FF_ExportExif("temp")
call FF_SaveImage("temp.bmp",0)
' externe Bearbeitung("temp.bmp")
call FF_LoadImage("temp.bmp")
call FF_ImportExif("temp")
call FF_SaveImage(name,0)
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 & "Button_" & file & 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) & "\"
file = fso.GetBaseName(path)
ext = "." & fso.GetExtensionName(path)
end sub
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 & "Blur_" & file & 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) & "\"
file = fso.GetBaseName(path)
ext = "." & fso.GetExtensionName(path)
end sub
//FFSubmenu=Optimieren
//FFName=setarea-test
var pwidth=0,pheight=0,mix=0;
var text = "Diese Schrift stellt eine weitere Bearbeitung dar, die nach Beendigung der Maskierung über das gesamte Bild erfolgt. Featuring Mastermix V1.3 "
main();
function ModifyImage()
{
FF_PopImage(); FF_PushImage();
FF_PushImage();
// FF_SetArea(0,0,0,0,0,0,0); // wenn aktiv, dann wirkt die spätere Rechteckmaske nicht
/*******************************************************************************************************************
Im Moment stellt sich die Situation für mich wie folgt dar:
1. Wird SetArea aktiviert, funktioniert es wie gewollt, läßt sich aber nicht wieder abschalten mit (0,0,0,0,0,0,0)
2. Wird irgendwo im Scriptverlauf mit SetArea(0.0.0.0.0.0.0) abgeschaltet, dann wirkt die Rechteckbegrenzung
nirgendwo im Script
3. Zum Abschalten Setarea auf die maximalen Bildkoordinaten setzen, anstatt auf 0,0,0,0 hilft auch nicht weiter
*******************************************************************************************************************/
FF_Killmask(); // ist nötig, sonst kommt der masken-masken-masken-Effekt
FF_PushImage(); // ablegen für die weitere BEA nach Differenzmaskierung
FF_SpectralSaturation(40,130,0)
FF_Diff();
FF_Monochrome(0.25, 0.50, 0.25);
FF_Autocontrast()
FF_SetArea(85,50,300,310,0,255,20);
FF_Blur(20)
FF_PutMask();
FF_PopImage(); // nach Maskenerstellung Original zurück holen
FF_WhiteBalance(-255,-255,255) // diese Funktion verändert die die Farbe im maskierten Bereich
FF_Killmask();
//FF_SetArea(0,0,0,0,0,0,0); // wenn aktiv, dann wirkt die Rechteckmaske nicht
// wenn deaktiv, dann wirkt die Rechteckmaske dauerhaft
// die Rechteckbegrenzung sollte hier abgeschaltet werden, was mir nicht gelingen will
//FF_SetArea(0,0,800,540,0,255,0) // auch das funktioniert leider nicht
weiterebearbeitungsfunktionen() //hier darf weder die Farbmaske noch die Rechteckmaske wirken
FF_MixImage(0,0,FF_GetImageWidth(),FF_GetImageHeight(),mix*256/255);
FF_PopImage();
}
function OnOK()
{
FF_PopImage(); ModifyImage(); FF_Reload();
}
function OnCancel() {return true;}
function OnTimer()
{
if(0 == pwidth)
{
pwidth = FF_GetControlWidth("DLG","PV");
pheight = FF_GetControlHeight("DLG","PV");
//FF_HQScale(pwidth,pheight,true); FF_PushImage();//deaktiviert weil kleines Bild
FF_SetControl("DLG","PV","0");
}
imix = FF_GetControl("DLG","SL");
if(imix != mix)
{
mix = imix;
ModifyImage(); FF_SetControl("DLG","PV","0");
}
}
function main()
{
if(0 == FF_GetImageWidth()) {FF_MessageBox("Kein Bild geladen",0); return;}
//** Start Dialog DLG **
FF_AddDialog("DLG",475,353);
FF_AddControl("DLG","PV","IMAGE",0,0,435,351);
FF_AddControl("DLG","SL","VSLIDER",436,0,23,353);
FF_AddControl("DLG","OK","BUTTON",460,250,15,100);
FF_SetControl("DLG","SL",255);
//** End Dialog DLG **
FF_PushImage();
FF_SetDialogTimer("DLG",100);
for(;;)
{
ret = FF_ShowDialog("DLG");
if(ret == "CANCEL") break;
if(ret == "TIMER") OnTimer();
if(ret == "OK") {OnOK(); break;}
}
FF_CloseDialog("DLG");
}
function weiterebearbeitungsfunktionen()
{
FF_DrawText( text , 130, 0, 50, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 80, 50, 40, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 50, 100, 30, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 30, 150, 20, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 15, 200, 15, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 5, 250, 10, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 15, 300, 15, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 30, 350, 20, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 50, 400, 30, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 80, 450, 40, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 130, 500, 50, 0, 400, 0, 0,10 , 3874544);
}
//FFSubmenu=Optimieren
//FFName=areafillrect-test
var pwidth=0,pheight=0,mix=0;
var text = "Diese Schrift stellt eine weitere Bearbeitung dar, die nach Beendigung der Maskierung über das gesamte Bild erfolgt. Featuring Mastermix V1.3 "
main();
function ModifyImage()
{
FF_PopImage(); FF_PushImage();
FF_PushImage();
// FF_SetArea(0,0,0,0,0,0,0); // wenn aktiv, dann wirkt die Rechteckmaske nicht
/********************************************************************************************************************************************
Diese Version maskiert mit FF_AreaFillRect alles UM DEN RECHTECKBEREICH HERUM. Das wäre ein Workaround, um das Problem mit FF_SetArea zu umgehen
********************************************************************************************************************************************/
FF_Killmask(); // ist nötig, sonst kommt der masken-masken-masken-Effekt
FF_PushImage(); // ablegen für die weitere BEA nach Differenzermittlung
FF_SpectralSaturation(40,130,0)
FF_Diff();
FF_Monochrome(0.25, 0.50, 0.25);
FF_Autocontrast()
FF_AreaFillRect(0,0,800,50,255); // Streifen komplett oberhalb des Rechtecks
FF_AreaFillRect(0,311,800,540,255); // dto. unterhalb
FF_AreaFillRect(0,51,84,310,255); // genau links vom Rechteck
FF_AreaFillRect(311,51,800,310,255); // genau rechts vom Rechteck
// alles außerhalb des Rechteckes wird damit maskiert
FF_WhiteBalance(-255,-255,-255) // hier braucht areafillrect diesen befehl - sonst passiert nix
// zum Verständnis: Offensichtlich ist dieser Befehl immer mit -255 -255 -255 zu besetzen, damit wird
// wohl einfach nur die Veränderung in dem maskieren Bereich definiert. Diese Anweisung muß immer
// hier stehen, damit die Maske wirkt. Ich verstehe das zwar nicht, aber das ist nicht so wichtig.
// Mit den anderen Werten wird außerhalb des Rechtecks das Bild verändert - ungewollt und unkontrolliert,
// Nutzung anderer Werte ist somit nach vorläufiger Erkenntnis unsinnig.
FF_Blur(20)
FF_PutMask();
FF_PopImage(); // nach Maskenerstellung Original zurück holen
FF_WhiteBalance(-255,-255,255) // diese Funktion bestimmt die die Farbe des zu verändernden Bereiches = RICHTIG
FF_Killmask();
weiterebearbeitungsfunktionen() //hier darf weder die Farbmaske noch die Rechteckmaske wirken
FF_MixImage(0,0,FF_GetImageWidth(),FF_GetImageHeight(),mix*256/255);
FF_PopImage();
}
function OnOK()
{
FF_PopImage(); ModifyImage(); FF_Reload();
}
function OnCancel() {return true;}
function OnTimer()
{
if(0 == pwidth)
{
pwidth = FF_GetControlWidth("DLG","PV");
pheight = FF_GetControlHeight("DLG","PV");
//FF_HQScale(pwidth,pheight,true); FF_PushImage();
FF_SetControl("DLG","PV","0");
}
imix = FF_GetControl("DLG","SL");
if(imix != mix)
{
mix = imix;
ModifyImage(); FF_SetControl("DLG","PV","0");
}
}
function main()
{
if(0 == FF_GetImageWidth()) {FF_MessageBox("Kein Bild geladen",0); return;}
//** Start Dialog DLG **
FF_AddDialog("DLG",475,353);
FF_AddControl("DLG","PV","IMAGE",0,0,435,351);
FF_AddControl("DLG","SL","VSLIDER",436,0,23,353);
FF_AddControl("DLG","OK","BUTTON",460,250,15,100);
FF_SetControl("DLG","SL",255);
//** End Dialog DLG **
FF_PushImage();
FF_SetDialogTimer("DLG",100);
for(;;)
{
ret = FF_ShowDialog("DLG");
if(ret == "CANCEL") break;
if(ret == "TIMER") OnTimer();
if(ret == "OK") {OnOK(); break;}
}
FF_CloseDialog("DLG");
}
function weiterebearbeitungsfunktionen()
{
FF_DrawText( text , 130, 0, 50, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 80, 50, 40, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 50, 100, 30, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 30, 150, 20, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 15, 200, 15, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 5, 250, 10, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 15, 300, 15, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 30, 350, 20, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 50, 400, 30, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 80, 450, 40, 0, 400, 0, 0,10 , 3874544);
FF_DrawText( text , 130, 500, 50, 0, 400, 0, 0,10 , 3874544);
}