meta data for this page
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

transparenz [2012/02/10 10:13] (aktuell)
Zeile 1: Zeile 1:
 +====== 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
 +
 +  '​---------------------------------------------------------------------------