Transparenz


Die Möglichkeit Transparenz in FF-Skripten zu verwenden, soll an einem Skriptbeispiel gezeigt werden.

Walter Wichmann (Walter-46) hat ein Javaskript geschrieben, mit dem ein Bild verkleinert und gedreht in das Originalbild eingefügt wird.

  • Dazu wird eine Maske in der Größe des Originalbildes mit schwarzem Hintergrund erstellt, in der ein weißes, gedrehtes Rechteck in der verkleinerten Größe des Bildes eingefügt ist.
  • Dann wird das Originalbild verkleinert und gedreht.
  • Nach Tonwertkorrektur werden die beiden Bilder addiert.


Gedreht einfügen (js)

//FFSubmenu=Test
//FFName=Gedreht einfügen
//Idee und Realisation : Walter Wichmann (Walter-46) im Februar 2012
 
var xx=FF_GetImagewidth();var yy=FF_GetImageheight();
FF_PushImage();FF_PushImage();
 
//********** Maske erstellen : Innen schwarz + Außen weiss für Mixbild B ****
 
FF_NewImage(xx, yy, 16777215);FF_Rotate(17,0,255); FF_HQScale(xx/3, yy/3,1)
var xk=FF_GetImagewidth();var yk=FF_GetImageheight();
 
FF_ExtendCanvas((xx-xk)/2-3,(xx-xk)/2-3, (yy-yk)/2-3,(yy-yk)/2-3 ,255,0,0)
FF_ExtendCanvas(3,3,3,3,128,0,64)
FF_HQScale(xx, yy,0);
 
FF_PushImage();FF_SpectralSaturation(360,350, 0);
FF_Diff();FF_Monochrome(1,1,1);FF_Autocontrast();
 
FF_Negate();FF_Killmask();FF_Putmask();FF_PopImage();
 
//********** Mixbild A vorbereiten : kleines Bild innen + Umgebung schwarz *****
 
FF_PopImage(); FF_Rotate(17,0,0); FF_HQScale(xx/3, yy/3,1)
FF_ExtendCanvas((xx-xk)/2,(xx-xk)/2, (yy-yk)/2,(yy-yk)/2 ,0,0,0)
FF_HQScale(xx, yy,0);
 
//********** Mixbild B vorbereiten *******************************
 
FF_SwapImage();FF_rgbgamma(0,1,0.5,0,0, 0,1,0.5,0,0,  0,1,0.5,0,0)
 
FF_MixImage(0,0,xx,yy,-1);  // addieren
 
FF_PopImage();
FF_Reload();
 

Und hier noch die vbs-Version. Bei der wurden die Möglichkeiten mit den Befehlen 'FF_Rotate' und 'FF_ExtendCanvas' direkt schwarze Flächen zu erzeugen, genutzt und so das Skript etwas gekürzt. Außerdem wurden dem Drehwinkel und dem Verkleinerungsfaktor Konstanten zugewiesen, so dass mit diesen Werten experimentiert werden kann.

Gedreht einfügen (vbs)


'FFSubmenu=Test
'FFName=Gedreht einfügen

'Idee und Realisation als Javaskript: Walter Wichmann (Walter-46) im Februar 2012

'Gekürzt durch Nutzung der Produktion von schwarzen Flächen mit den
'Befehlen 'FF_Rotate' und 'FF_ExtendCanvas'
'und übersetzt in ein VB-Skript: Harald Maeckler (Mecki14) im Februar 2012
'---------------------------------------------------------------------------
Option Explicit
const dw = -30   'Drehwinkel, kann auch negativ sein
const vk = 1     'Verkleinerung 1:vk (vk >= 1)
Dim xx,yy,xk,yk
'---------------------------------------------------------------------------
xx=FF_GetImagewidth
yy=FF_GetImageheight
FF_PushImage
FF_PushImage
 
'********** Maske erstellen : Innen weiß + Außen schwarz für Mixbild B *****

FF_NewImage xx, yy, 16777215                        'Neues Bild mit Originalmaße in weiß
FF_Rotate dw,0,0                                    'Drehen ohne Beschnitt, Hintergrund schwarz
FF_HQScale xx/vk, yy/vk,true                        'Verkleinern um Verkleinerungsfaktor
                                                    '   dabei Seitenverhältnis beibehalten
xk = FF_GetImagewidth
yk = FF_GetImageheight
 
FF_ExtendCanvas (xx-xk)/2,(xx-xk)/2,(yy-yk)/2,(yy-yk)/2,0,0,0  'Erweitern um schwarz auf Originalmaße
FF_HQScale xx,yy,false                               'Skalieren auf Originalmaße

FF_Putmask
 
'********** Mixbild A vorbereiten : kleines Bild innen + Umgebung schwarz *****

FF_PopImage                                          'Originalbild nach oben holen
FF_Rotate dw,0,0                                     'Drehen ohne Beschnitt, Hintergrund schwarz
FF_HQScale xx/vk,yy/vk,true                          'Verkleinern um Verkleinerungsfaktor
FF_ExtendCanvas (xx-xk)/2,(xx-xk)/2,(yy-yk)/2,(yy-yk)/2,0,0,0  'Erweitern um schwarz auf Originalmaße
FF_HQScale xx, yy,false                              'Skalieren auf Originalmaße
                                                     '   ohne Rücksicht auf das Seitenverhältnis
'********** Mixbild B vorbereiten und addieren *********************************

FF_SwapImage                                         'Original nach oben /verkl. Bild nach unten
FF_rgbgamma 0,1,0.5,0,0, 0,1,0.5,0,0,  0,1,0.5,0,0   'Tonwertkorrektur + Begrenzung

FF_MixImage 0,0,xx,yy,-1                             'Addition der beiden Bilder

FF_PopImage
FF_Reload
 
'---------------------------------------------------------------------------