zur Übersicht nächste Seite

Programmfenster für Farbauswahl

Die Ausführungen der vorherigen Seiten über Programmfenster werden hier weitergeführt. 
Generell gilt bei den weißen Textstellen auf dieser Seite: Man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Terminals ein - dann drückt man die Eingabetaste. 
Oder man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Editors ein.  
Dann drückt man zum Abspeichern gleichzeitig Strg und O 
dann drückt man die Eingabetaste um den Dateinamen zu bestätigen 
dann drückt man zum Verlassen des Editors gleichzeitig Strg und X.

Es gibt von zenity ein ganz tolles Fenster für eine Farbauswahl. Den Rückgabewert erhält man mit
szCol=$(zenity --color-selection --show-palette ); echo $szCol

Man kann sogar einen HEX-Code hineinschreiben. Nach dem Drücken der Taste   Auswählen   erhält man die Ausgabe des Farbwertes im Terminal. Dieser Farbwert wird im rgb-Format ausgegben und ist gleich weiterverwendbar. 

Es gibt auch ein Schieberegler-Fenster. Den Rückgabewert erhält man mit
szAb=$(zenity --scale --title="Abstand festlegen" --text=" Einstellung des Abstandes \n von Schrift zu Spiegelbild \n in pixel" --min-value=0 --max-value=50 --value=10 ); echo $szAb
Für das Folgende muß man ein wenig über ImageMagick wissen. Das soll aber hier nicht vertieft werden. Im Internet habe ich ein Kommando gefunden mit dem man ein Spiegelbild erzeugen kann. Damit kann man ein neues Script schreiben, das folgendes macht:

Es wird ein Farbauswahlfenster erzeugt und der Farbwert szCol als Variable hinterlegt.

Es wird ein Textfenster erzeugt und der Eingabetext szTxt als Variable hinterlegt.

Es wird ein Schieberegler-Fenster erzeugt und die Schrifthöhe szSch als Variable hinterlegt.

Es wird ein Schieberegler-Fenster erzeugt und der Abstand zwischen Schrift und Spiegelbild szAb als Variable hinterlegt.

Mit label wird nun eine Simulierung des geschriebenen Textes durchgeführt, denn label erzeugt automatisch die passende Bildgröße für die ausgewählte Schrift. Es wird die Bildbreite  szB   und die Bildhöhe   szH  als Variable hinterlegt.

Es wird das Datum mit Stunden, Minuten und Sekunden als Variable   szDt   hinterlegt, denn es wird eine Bild-Datei erzeugt, die dieses Datum als Dateiname erhalten soll. Dadurch kann man das Programm immer wieder aufrufen und es wird jedesmal eine Bild-Datei mit anderem Namen erzeugt - es wird keine bestehende Datei überschrieben. 

Dann wird mit den zuvor bestimmten Bildmaßen ein Schriftzug mit draw gezeichnet. Danach wird ein transparentes Abstandsbild erzeugt, und das gezeichnete Bild auf den Kopf gestellt. Es wird eine Maske erzeugt, die den auf dem Kopf stehenden Schriftzug von oben nach unten immer transparenter werden läßt. Zwischenbilder werden gelöscht und dann alles senkrecht aneinandergeklebt.
nano ~/Bla/scZ.sh
Eingabe in den Editor:
#!/bin/bash

szCol=$(zenity --color-selection --show-palette )
if [ "$szCol+1" = "+1" ]; then exit; fi

szTxt=$(zenity --entry --ok-label "Weiter zu Schriftgröße" --title "Texteingabe" --text " Es wird später eine Zeile \n ausgegeben, \n also nicht zu viele \n Zeichen verwenden" --entry-text "" )
if [ "$szTxt+1" = "+1" ]; then exit; fi

szSch=$(zenity --scale --ok-label "nächste Eingabe" --title="Schrifthöhe festlegen" --text=" Einstellung der Schrifthöhe" --min-value=12 --max-value=200 --value=60 )
if [ "$szSch+1" = "+1" ]; then exit; fi

szAb=$(zenity --scale --title="Abstand festlegen" --text=" Einstellung des Abstandes \n von Schrift zu Spiegelbild \n in pixel" --min-value=0 --max-value=50 --value=10 )

szB=$(convert -background none -fill black -pointsize "$szSch" -font Freeserif-Fett label:"$szTxt" -border 4x4 -format '%w' info: )

szH=$(convert -background none -fill black -pointsize "$szSch" -font Freeserif-Fett label:"$szTxt" -border 4x4 -format '%h' info: )

szDt=$(date +"%y-%m-%d-%H-%M-%S")

convert -size "$szB"x"$szH" xc:none -fill black -font FreeSerif-Fett -pointsize "$szSch" -gravity center -draw "text 0,2 '$szTxt'" -draw "text 1,2 '$szTxt'" -draw "text 2,2 '$szTxt'" -fill "$szCol" -draw "text 0,0 '$szTxt'" \( -size "$szB"x"$szAb" xc:none \) \( -clone 0 -flip \) \( -clone 0 -alpha extract -flip -size "$szB"x"$szH" gradient: +level 0x98% -compose multiply -composite \) \( -clone 2 -clone 3 -alpha off -compose copy_opacity -composite \) -delete 2,3 -channel rgba -alpha on -append ~/"$szDt".png
Nun muß man diese Datei ausführbar machen (also in ein Programm verwandeln):
chmod +x ~/Bla/scZ.sh
Nun erzeugt man noch ein kleines Bild für das Programm:
convert -size 48x48 xc:red \( -size 40x40 xc:yellow \( -size 30x30 -background green -gravity center -fill black -font FreeSerif -pointsize 36 label:Z \) -gravity center -composite \) -gravity center -composite ~/Bla/CZ.png
Mit Rechtsklick auf die Datei scZ.sh wählt man wieder Eigenschaften. Dann vergibt man einen Namen, hier etwa
Spiegeltext
Für das Icon wählt man die Datei CZ.png aus dem Ordner Bla, dann schließt man das Eigenschaften-Menü. 
Rechtsklick auf      und Ausführen ergibt:










Nach Drücken auf OK wurde ein Datumsbild.png erzeugt mit transparenten und halbtransparenten pixeln. Dieses Bild ist nicht im jpg-Format oder im gif-Format darstellbar, da beide Formate keine halbtransparenten pixel unterstützen.

Aber man kann das Datumsbild.png leicht auf ein Hintergrundbild legen und dann verschmelzen die halbtransparenten pixel mit den pixeln des Hintergrundbildes. Dies ist im Terminal möglich durch

convert Hintergrund.png Datumsbild.png -gravity north -composite Beispiel.png

Das Hintergrundbild.png kann natürlich einen beliebigen Namen haben und auch ein jpg-Bild sein. Das Datumsbild.png hat natürlich einen Namen der Form
17-10-15-17-51-22.png

Diese grafische Fenster-Darstellung ist sehr schön aber das convert-Kommando in das Terminal einzugeben erlaubt sehr viel mehr Möglichkeiten. So ist die Schriftart hier fest vorgegeben - man kann natürlich ein Auswahlfenster für Schriftarten hinzufügen. So ist die Stärke des Transparenzverlaufes hier fest vorgegeben mit 98% - man kann natürlich ein Auswahlfenster für die Stärke des Transparenzverlaufes hinzufügen. Die Spiegelung ist hier für ein gezeichnetes Textbild durchgeführt worden, aber diese Spiegelung funktioniert auch bei jedem anderen Bild.

zur Übersicht nächste Seite

Datenschutzerklärung
Impressum