In loser Folge präsentiere ich hier Tipps zu Problemen, an denen ich selber länger geknobelt habe. Ich hoffe, dass sie dem einen oder anderen von Nutzen sind, nicht zuletzt vielleicht mir selbst, wenn ich wieder mal über das Problem stolpere.
Um Grafiken vor unterschiedlichen Hintergründen erscheinen zu lassen, gibt es das Konzept der Transparenz bei Bilddateien. Hier wird erklärt, wie man mit der Open-Source-Software Gimp einen scharf umgrenzten Bereich eines Bildes transparent machen kann.
1. Ein Bild erstellen.
Der Hintergrund hat noch eine (einheitliche Farbe), hier weiß. Diese soll jetzt transparent gemacht werden. Auch die "Löcher" sollen durchsichtig werden.
2. Alpha-Kanal hinzufügen
Als nächstes muss der sogenannte Alpha-Kanal als vierter Farbkanal hinzugefügt werden. Dort wird die Transparenz (Deckungskraft) gespeichert. Wie wir später kennenlernen werden, gibt es dabei auch teilweise Transparenz.
Mit dem Menüpunkt Ebenen-Transparenz-Alpha-Kanal hinzufügen wird der Alpha-Kanal hinzugefügt.
3. Den Hintergrund auswählen
Dies kann mit dem Zauberstab gemacht werden, oder mit der Funktion "nach Farbe", damit wählt man die Löcher auch gleich mit aus.
4. Den ausgewählten Hintergrund löschen.
Durch die Entf-Taste wird der selektierte Hintergrund gelöscht und damit transparent.
Dann muss das Bild nur noch in einem Format gespeichert werden, das Transparenz unterstützt. Dies sind u.a. .tiff, .gif und .png.
Das Ergebnis z.B. auf einer Seite mit farbigem Hintergrund sieht dann so aus:
Das Konzept des Alpha-Kanals ist noch weit mächtiger als nur eine bestimmte Farbe durchsichtig erscheinen zu lassen. Mit modernen Bildformaten wie png ist es sogar möglich, einen gleitenden Übergang von transparent zu nichttransparent einzustellen. Der Alpha-Kanal enhält dabei nicht nur die Information ob transparent oder nicht, sonder auch wie transparent.
Mit Gimp lassen sich auch solche Bilddateien erstellen.
1. Bild erstellen, Hintergrund ist noch weiß.
Im Unterschied zu Tipp 5 gibt es jedoch Stellen, an denen die Farbe gleitend in weiß übergeht, nämlich hier den gleitend auslaufenden Schatten.
Würde man jetzt wie oben vorgehen, bliebe der Übergang von grau zu weiß genau so erhalten und dann käme ein abrupter Wechsel zu transparent, so dass eine nichtweiße Hintergrundfarbe an einer scharfen Kante beginnen würde.
2. Jetzt kommt die Funktion "Farbe zu Transparenz" im Menü Farben zum Einsatz. Die weiße Hintergrundfarbe wird als die Farbe ausgewählt die transparent werden soll, d.h. bei der der Alpha-Kanal auf 0 (Deckungsgrad = 0) gesetzt wird. Je mehr andere Farben davon abweichen, desto höher wird der Deckungsgrad im Alpha-Kanal eingestellt.
Generierung der Alpha-Kanal werte aus Farbwerten (hier Hintergrundfarbe weiß)
Das Ergebis ist schon ganz gut, da wir erstmals einen gleitenden Übergang der Alpha-Werte zur Transparenz hin erhalten haben. Allerdings ist es noch nicht ganz perfekt, da auch die Kartoffel "ein bisschen durchsichtig" gemacht wurde, da die Ocker-Farbe nicht das exakte Komplement von weiß ist. Dies ist z.B. an dem leichten Karo-Muster auf der Kartoffel erkennbar. Außerdem ist der Schatten fast ganz durchsichtig, eigentlich gehört er schon eher undurchsichtig. Solche Abweichungen können jedoch recht leicht durch Bearbeiten des Alpha-Kanals behoben werden.
Dazu muss im Kanal-Fenster nur der Alpha-Kanal ("Deckkraft") aktiviert (blau hinterlegt) sein, was durch anklicken erledigt werden kann. Falls das Kanal-Fenster nicht angezeigt wird, dann es durch "Dialoge-Kanäle" geöffnet werden.
Alleiniges Aktivieren des Alpha-Kanals
Mit dem Tool "Farben - Kurven" kann der Alpha-Kanal (wie jeder andere Kanal auch) modifiziert werden. Zunächst oben bei Kanal den Alpha-Kanal einstellen. Dann können durch Verschieben der Transformationskurve die Werte angehoben oder abgesenkt werden. Die senkrechten grauen Linien zeigen praktischerweise das Histogramm, so dass man leicht bestimmte Bereiche des Bildes identifizieren kann. Die Linie rechts entspricht beispielsweise der fast ganz deckenden Kartoffel, die wir durch nach oben ziehen der Kurve ganz deckend machen können. Durch nach oben oder unten Ziehen der Kurve an der Stelle über der kurzen Linie im linken Viertel kann der Schatten mehr oder weniger deckend gemacht werden.
Justieren des Alpha-Kanals
Zum Schluss das ganze in einem Alpha-Kanal-fähigen Format speichern (z.B. png). Das Ergebnis sollte so aussehen:
Auch mit der professionellen Grafik-Software Adobe Photoshop lässt sich natürlich eine Index-Transparenz erstellen.
1. Ein Bild erstellen oder laden
Da in Photoshop der Hintergrund der Hintergrundebene nicht direkt gelöscht werden kann, muss das Bild zuerst in eine andere Ebene kopiert werden. Dazu klickt man per rechter Maustaste auf die Ebene im Ebenenfester und wählt "Ebene dublizieren".
Mit "Ebene dublizieren" wird die Hintergrundebene kopiert.
2. Hintergrundbereiche löschen
Danach muss die kopierte Ebene zum bearbeiten aktiviert werden. Dies geschieht durch anklicken der Ebene im Ebenenfenster, so dass sie blau erscheint. Die originale Hintergrundebene muss deaktiviert werden, so dass sie nur noch weiss angezeigt wird. Sie sollte auch gleich ausgeblendet werden, was durch wegklicken des Augensymbols vor der Ebene geschieht.
Jetzt kann mit einem Auswahlwerkzeug der Bereich ausgewählt werden, der transparent werden soll. Am praktischsten ist dabei das Zauberstab-Werkzeug, das den Bereich einer einheitlichen Farbe auswählen kann.
Nun kann ganz einfach mit der "Entf/Del"-Taste der ausgewählte Bereich gelöscht werden, so dass das Schachbrettmuster als Zeichen für Transparenz durchscheint.
Der Randbereich ist bereits gelöscht, die Originaleben ist noch vorhanden.
3. Alte Hintergrundebene löschen
Dann kann noch die alte Hintergrundebene ganz gelöscht werden, und das Bild unter einem transparenzfähigen Format abgespeichert werden.
Fertiges transparentes Bild
Natürlich ist auch Alpha-Kanal-Transparenz mit Photoshop möglich.
Ausgehend von einem bestehenden Bild mit weißem Hintergrund und einem gleitenden Übergang von einer Farbe zu diesem Hintergrund soll hier wiederum die Vorgehensweise dargestellt werden.
Originalbild mit Übergang zu weißem Hintergrund
Zunächst muss nun wieder die Ebene dubliziert werden, wie schon bei der einfachen Transparenz. Danach müssen die Bereiche ausgewählt werden, die transparent werden sollen. Dabei muss man ausnutzen, dass die Auwahl ein eigener Kanal ist, d.h. alle Abstufungen zwischen "ausgewählt" und "nicht ausgewählt" möglich sind. Die Bereiche des Übergangs sollen also "halbausgewählt" werden, damit sie dann beim Löschen der ausgewählten Bereiche "halbdurchsichtig" werden. Der hier passende Befehl zum teilweisen Auswählen ist "Auswahl - Farbbereich auswählen". Dabei muss man mit der Auswahl "Aufgenommene Farben" auf den Hintergrund klicken.
Auswählen des Hintergrundes un teilweises Auswählen des Übergangsbereiches; mit dem Regler "Toleranz" kann die spätere Durchsichtigkeit justiert werden.
Durch Drücken der Entf/Del-Taste kann nun wiederum der Hintergrund gelöscht werden, wobei der Übergang zu einem Überganng zur Transparenz wird.
Gelöschter Hintergrund
Falls noch vorhanden, können überschüssige Ebenen gelöscht werden. Dann kann das Bild als png oder tiff-Datei gespeichert werden und sieht wie gewünscht aus.
Fertiges transparentes Bild
Hier noch die Anleitung, wenn der gleiche Effekt erstellt werden soll, der Schatten aber erst noch erstellt werden muss.
Zunächst wird ein Bild benötigt, bei dem bereits der (scharf abgegrenzte) Hintergrund transparent gemacht wurde.
Ausgangsbild ohne Schatten, aber schon mit Transparenz
Zunächst muss die Ebene wieder dupliziert werden. Dann wird die hintere Ebene mit dem Verschieben-Werkzeug leicht verschoben (Schatteneffekt) und in der Farbsättigung heruntergefahren. Der Befehl findet sich im Menü Bild - Anpassen - Farbton/Sättigung.
Eine Ebene wird grau mangels Farbsättigung
Dann kann der graue Schatten mit dem Gausschen Weichzeichnungsfilter gleichmäßig auslaufend gemacht werden
Auslaufender Schatten durch Gausschen Weichzeichner
Das wars dann auch schon, da Bild müsste dem viertletzten ähnlich sehen. Speichern als png oder tiff nicht vergessen.
PDF-Dateien können durch ein Passwort mit abgestuften Rechten versehen werden, die u.a. das Ausdrucken verhindern. Diese Beschränkung wird jedoch nur programmseitig implementiert, wobei die Adobe-Produkte (Acrobat und Adobe Reader) druckgeschützte Dateien nicht drucken. Mit anderen Programmen ist der Druck jedoch möglich.
Am einfachsten geht es mit dem Programm Evince.
Eine weitere Programmkombination ist GSview/Ghostscript, womit übrigens auch PDFs erstellt werden können. Es müssen beide Programme installiert werden, da GSview nur das Frontend für Ghostscript ist. Neuere Versionen von Ghostscript erkennen inzwischen ebenfalls die Schutzeinstellungen der PDF-Dateien. Dies kann jedoch deaktiviert werden. Dazu muss in der Datei pdf_sec.ps
die Zeile
Trailer /Encrypt oget /P oget 4 and 0 eq #? and
durch folgende
Trailer /Encrypt oget /P oget 4 and 9 eq #? and
ersetzt werden.
Standartmäßig öffnet der Windows-Explorer beim starten den Ordner "Eigene Dateien". Viele Benutzer speichern ihre Dateien jedoch nicht in diesem Ordner sondern auf einer gesonderten Festplatte (z.B. Laufwerk D:) da dies Vorteile beim Backup, bei einem Festplattendefekt und beim Volllaufen einer Festplatte hat.
Um zu vermeiden, dass man jedes Mal beim Starten des Explorers mit 2-3 Klicks nach D: navigieren muss, ist es praktisch, diesen Ordner als Startordner einzustellen.
Dies geschieht am einfachsten dadurch, dass man auf das Explorer-Symbol mit der rechten Maustaste klickt (es ist ja eigentlich eine .pif-Datei) und dort die Eigenschaften öffnet. Bei "Ziel" fügt man dann an die Kommandozeile z.B. die Parameter /n,/e,D:\
an. "/n" bedeutet einen neuen Explorer öffnen, auch wenn schon einer offen ist; "/e" bedeutet "erweiterte Ansicht" und D:\ ist der standardmäßig zu öffnende Ordner.
Die ganze Befehlszeile lautet dann: c:\windows\explorer.exe /n,/e,D:\
Klickt man mit der rechten Maustaste im Windows-Explorer auf eine Datei, erscheint ein Auswahl an Aktion, die mit der Aktion durchgeführt werden können, meist "Öffnen", "Bearbeiten" und andere. Möchte man die Verknüpfung mit den dabei vorgesehenen Programmen ändern, so gibt es zwei Möglichkeiten. Zum einen kann mit Shift-Rechtsklick die Option "Öffnen mit..." aktiviert werden. Nach Auswahl eines Programms kann das Häkchen bei "immer mit diesem Programm öffnen" angewählt werden.
Dies funktioniert jedoch nur für die Option "Öffnen". Soll "Bearbeiten" mit einem anderen Programm verknüpft werden, so kann dies in der Registry eingerichtet werden. Zwei Gruppen an Keys sind dabei beteiligt: Bei
HKEY_CLASSES_ROOT\<.ext>\
wird der Datei-Erweiterung .ext ein Filetyp-Bezeichner zugeordnet. Unter
HKEY_CLASSES_ROOT\<Filetyp-Bezeichner>\shell\edit\command\
und
HKEY_CLASSES_ROOT\<Filetyp-Bezeichner>\shell\open\command\
werden die Programme festgelegt, die unter dem entsprechenden Befehl verwendet werden. Dies kann entsprechend den eigenen Wünschen abgeändert werden.
Moderne Digitalkameras mit 5 bis 10 Megapixeln liefern Bilder mit einer Dateigröße von 1 bis 3 MiB. Dies ist zu groß, um ganze Bilderserien per E-Mail zu verschicken, oder auf Webseiten hochzuladen. Dazu reicht eine geringere Auflösung von z.B. 1000 Pixeln meist vollkommen. Um jedoch die Bilder einer ganzen Serie auf ein kleineres Format zu skalieren ist viel Handarbeit nötig, wenn man nicht ein Programm hat, das dies automatisch kann. Natürlich gibt es kommerzielle Software wie ACDSee, jedoch kann diese Aufgabe auch prima mit freier Software bewerkstelligt werden. Ich empfehle hier das Programmpaket ImageMagick, das unter anderem das tool mogrify enthält, mit dem ganze Ordner an Bilddaten an Ort und Stelle bearbeitet werden können.
Das Programm arbeitet kommandozeilenorientert und der Befehl lautet beispielsweise
mogrify -resize 1000x1000 *.jpg
Damit werden alle .jpg-Dateien im aktuellen Ordner auf eine Maximalgröße von 1000x1000 Pixel skaliert. Das Seitenverhältnis wird beibehalten. Kleinere Bilder bleiben unverändert. Die alten Dateien werden dabei überschrieben, deshalb sollten diese zuerst kopiert werden, falls man die Originale archivieren will. Der jpeg-Komprimierungsfaktor wird wenn möglich vom Originalbild übernommen, ansonsten wird standartmäßig 85 verwendet. Dieser kann auch manuell mit dem Parameter -quality 80
angegeben werden. Es gibt eine Unzahl an weiteren Tools, Befehlen und Paramtern, diese sind auf der Homepage des Projektes dokumentiert.
Wenn man sich bei Linux von einer Konsole abmeldet, werden alle Prozesse, die man während der Sitzung gestartet hat, beendet. Dies ist manchmal unerwünscht, wenn man beispielsweise den Server nutzen möchte, um irgendwelche langwierigen Berechnungen auszuführen, während der Client-Computer heruntergefahren werden soll. In Linux gibt es dafür zwei Lösungsmöglichkeiten.
nohup
Nohup wird beim Starten vor den eigentlichen Befehl gesetzt. Dies bewirkt, dass das SIGHUP-Signal beim ausloggen für diesen Prozess unterdrückt wird.
Beisipiel:nohup gams meinmodell.gms
at
At dient dazu, Befehle zeitverzögert ausführen zu lassen. In Kombination mit der Zeitangabe "now" werden die Befehle sofort ausgeführt, aber trotzdem von der Konsole abgekoppelt. Die Rückmeldung erfolgt lediglich über das E-Mail-System. Die Befehlseingabe erfolgt normalerweise über die Standarteingabe, was etwas unpraktisch ist, da sich so das Kommando über mehrere Zeilen erstreckt (Nach dem letzten Befehl "Strg-D" drücken.) Alternativ kann man mit "-f Datei" ein Skript aufrufen, das abgearbeitet wird. (Vielen Dank an Martin Weis)
Beisipiel:at now -f /home/user/meinscript.sh
screen
Screen ist wesentlich mächtiger als nohup, es emuliert nämlich ein virtuelles Terminal, das sozusagen zwischen das eigentliche Terminal und den Prozess geschoben wird. Der Aufruf erfolgt durch Voranstellen von screen
vor den Befehl. Loggt man sich aus, bleibt der "Screen" bestehen. Der große Vorteil ist, dass man (im Gegensatz zu nohup) den Screen beim Wiedereinloggen wieder aufnehmen kann.
Beispiele:
screen gams meinmodell.gms
(starten)
Tastenkombination Strg-a-d
koppelt das Terminal ab ("detach").
screen -r
(virtuelles Terminal nach dem neu-einloggen wieder aufnehmen ("reattach"))
screen -ls
(zeigt die laufenden Screens an)
Manchmal ist ein Programm auf ein anderes angewiesen. Deshalb ist es praktisch, ein Skript zu erstellen, das beide nacheinander startet und nach dem Beenden des zweiten, auch das erste Programm wieder stoppt:
#!/bin/bash
startProgramm1 &
pid=$!
startProgramm2
kill -3 $pid
Programm1 wird durch Anhängen von "&" im Hintergrund gestartet. In der Umgebungsvariablen "$!" steht die Process-ID des letzten im Hintergrund gestarteten Prozesses. Sie wird zwischengespeichert. Nach dem Beenden von "Programm2" (nicht im Hintergrund ausgeführt), wird Programm1 durch den Befehl kill
beendet.
Dieses Dokument darf unter Nennung des Autors unter gleichen Bedingungen weitergegeben werden (Creative Commons CC-BY-SA)
Joachim Aurbacher (joalbach@gmx.net) – 2007-2023