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 2> /dev/null); echo $szCol


Man kann sogar bei dem Feld   Farbname   einen HEX-Code hineinschreiben. Nach dem Drücken der Taste   Auswählen   erhält man die Ausgabe des Farbwertes im Terminal. Dieser Farbwert ist aber nicht der normale HEX-Code. 
Man hat z.B. die Ausgabe #a4be4059ad89  für den HEX-Code #A440AD
Um den HEX-Code zu bekommen muß man die Zeichenfolge bearbeiten.

Wenn man eine Variable mit vielen Zeichen hinterlegt

sA=123456789AbC987654321

kann man Zeichen links beginnend löschen, hier die ersten 8 Zeichen von links 

echo ${sA:8}

9AbC987654321

Man kann Zeichen von rechts beginnend löschen, hier die ersten 8 Zeichen von rechts (wichtig ist das Leerzeichen zwischen Doppelpunkt und Minus-Zeichen)

echo ${sA:: -8}

123456789AbC9

Löschen von links 3 Zeichen und von rechts 14 Zeichen

echo ${sA:3: -14}

4567

Man kann geschnittene Schnipsel zusammensetzen und weitere Zeichen dazugeben

echo ${sA:3: -14}zz${sA:9: -9}

4567zzAbC

Wenn man nicht weiß wie lange die Zeichenfolge ist kann man auch: 
lösche die ersten 5 Zeichen von links und nach weiteren 3 Zeichen lösche den gesamten Rest nach rechts

echo ${sA:5:3}

678

Oder: 
lösche die ersten 6 Zeichen von rechts und den ganzen Rest nach links nach dem 12. Zeichen von rechts

echo ${sA: -12: -6}

AbC987

Man kann Großbuchstaben in Kleinbuchstaben verwandeln (Zahlen bleiben erhalten)

sB=$(echo $sA | tr [:upper:] [:lower:] ); echo $sB

123456789abc987654321

Man kann Kleinbuchstaben in Großbuchstaben verwandeln (Zahlen bleiben erhalten) 

sB=$(echo $sA | tr [:lower:] [:upper:]); echo $sB

123456789ABC987654321

Damit kann man den gewünschten HEX-Code erzeugen
(ImageMagick benötigt bei dem HEX-Code keine Großbuchstaben, bei Kleinbuchstaben ist die Unterscheidung zwischen 0 und o ohnehin deutlicher)



szFb=$(echo ${szCol:: -10}${szCol:5: -6}${szCol:9: -2}); echo $szFb

Also Farbauswahlfenster aufrufen in der Form
szCol=$(zenity --color-selection --show-palette 2> /dev/null)
anschließend
szFb=${szCol:: -10}${szCol:5: -6}${szCol:9: -2}
Zum Anschauen des Rückgabewertes
echo $szFb
Für die ausgewählte Farbe #E718C1 erhält man jetzt den Rückgabewert #e718c1

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 2> /dev/null); 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 der Farbwert in einen HEX-Code übersetzt und szFb 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 2> /dev/null)

szFb=${szCol:: -10}${szCol:5: -6}${szCol:9: -2}

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 "" 2> /dev/null)

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 2> /dev/null)

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 2> /dev/null)

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 "$szFb" -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
Anschließend erstellt man wieder einen Programmstarter indem man einen Rechtsklick auf dem Desktop oder in einem Ordner macht und auswählt 
Neues Dokument 
Neuer_Starter 
Dann vergibt man einen Namen, hier etwa 
Spiegeltext
Auf das Pin-Symbol macht man anschließend einen Rechtsklick und wählt Eigenschaften. Man füllt die Felder entsprechend aus, wie auf der vorhergehenden Seite aber jetzt mit  scZ.sh
Für das Icon wählt man die Datei CZ.png aus dem Ordner Bla, dann schließt man das Eigenschaften-Menü. 
Doppelklick auf      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