© Heiner Lamprecht
logo

Aktionen und Skripte in Photoshop

Aktionen und Skripte in Photoshop

Adobe Photoshop ist ohne Zweifel eines der leistungsfähigsten und flexibelsten Programme für die Bildverarbeitung. Eine der großen Stärken dabei ist die Möglichkeit, wiederkehrende Abläufe zu automatisieren. In diesem Artikel beleuchte ich neben den bekannten „Aktionen“ auch die weit weniger bekannten, aber um so leistungsfähigeren „Skripte“, und erkläre, wie man mit Hilfe beider Konzepte die tägliche Arbeit erleichtern und verkürzen kann.

Wir alle kennen das: Da kommt man von einem schönen und ergiebigen Fotoausflug zurück an den heimischen Rechner, die Kameratasche voll mit gefüllten Speicherkarten, und nun geht es ans Sortieren und Bearbeiten. Die schönsten Bilder möchte man auch schnell noch mit anderen Fotofreunden teilen, sei es auf Facebook, Flickr, der eigenen Website, in einem der zahlreichen Fotoforen, oder einfach per Mail. Am Ende sitzt man wieder den ganzen Abend vor dem Computer und ärgert sich, dass das alles so furchtbar viel Zeit kostet. Dabei gibt es immer wieder einzelne Arbeitsschritte und Abläufe, die bei vielen, vielleicht sogar bei allen Bilder genau gleich oder zumindest in der selben Reihenfolge erfolgen.

Im Internet und manchen Büchern werden Aktionen auch ab und zu als „Aktions-Skripte“ bezeichnet. Dieser Name ist jedoch verwirrend, da in dem Konzept von Photoshop deutlich zwischen „Aktionen“ (engl. „actions“) und „Skripten“ (engl. „scripts“) unterschieden wird.

So soll beispielsweise bei allen Bildern der Kontrast geprüft werden, viele müssen vielleicht ein wenig nachgeschärft werden. Möglicherweise haben Sie auch Ihren ganz eigenen persönlichen Stil in der Bearbeitung. Am Ende sollen die Bilder alle auf die selbe Größe verkleinert und mit einem dezenten Copyright-Vermerk versehen werden. Mit Hilfe von Aktionen und Skripten ist es ein Leichtes, diese Abläufe zu vereinfachen und zu automatisieren. Das spart viel Zeit und hilft auch, keine Schritte zu vergessen.

Aktionen

Aktionsfenster in Photoshop Eine „Aktion“ in Photoshop ist eine aufgezeichnete und gespeicherte Abfolge von einzelnen Arbeitsschritten, die man jederzeit wieder bei beliebigen Bilder abspielen lassen kann. Das Ergebnis des Abspielens ist genau das gleiche, wie wenn man die einzelnen Schritte manuell auslösen würde. Es ist jederzeit möglich, die Reihenfolge der Schritte zu ändern sowie einzelne Schritte hinzuzufügen oder zu löschen. Auch kann man festlegen, ob die zu den Schritten gehörenden Dialoge angezeigt werden sollen oder nicht. Über eingefügte Hinweis-Dialoge kann man bei Bedarf auch Punkte im Ablauf festlegen, an denen die Abarbeitung abgebrochen werden kann. Das alles ist ohne jegliche Programmierkenntnisse direkt aus der Programmoberfläche von Photoshop möglich.

Alle Aktionen werden in dem Aktionsfenster (Fenster > Aktionen) angezeigt. Der besseren Übersicht wegen, lassen sich die Aktionen in Gruppen organisieren. Eine Gruppe von Aktionen kann außerdem als Datei exportiert und mit anderen Nutzern oder Computern ausgetauscht werden. Am unteren Rand dieses Fensters findet sich eine Werkzeugleiste mit verschiedenen Schaltflächen zum Anlegen, Aufzeichnen, Abspielen und Löschen von Aktionen.

Eine erste Aktion

Als erstes legen wir uns eine neue, eigene Aktions-Gruppe mit Namen „Einführung“ an (viertes Icon von links Neue Aktions-Gruppe). In diese kommen anschließend alle nachfolgenden neuen Aktionen.

Erste AktionIm ersten Beispiel wollen wir eine kleine Aktion aufzeichnen, die ein Bild auf eine bestimmte Größe verkleinert und anschließend eine Text-Ebene zu einem Bild hinzufügt. Zunächst müssen wir dazu ein beliebiges Bild geöffnet haben. Dann legen wir eine neue Aktion mit dem Namen „Verkleinern & Copyright“ an (fünftes Icon von links Neue Aktion). Sobald die Aufnahme läuft, öffnen wir den Dialog Bild > Bildgröße und geben als Breite 600 Pixel an. Anschließend wählen wir das Textwerkzeug (Taste T), klicken in der Nähe der linken unteren Ecke in das Bild und geben einen kurzen Text ein. Danach wird die Aufnahme der Aktion beendet (Erstes Icon in der Werkzeugleiste des Aktions-Fensters.). Fertig. Unsere erste Photoshop-Aktion steht zur Verfügung.

Um sie zu überprüfen, öffnen wir ein anderes Bild, wählen die neuangelegte Aktion aus und klicken auf das Abspielen-Icon. Ergebnis: Das Bild wird verkleinert und der zuvor eingegebene Text erscheint unten links in einer neuen Ebene.

Interaktive Aktionen

Nun legen wir eine zweite Aktion mit dem Namen „Aufhellen & Schärfen“ an. Als ersten Schritt öffnen wir den Dialog Bild > Anpassen > Helligkeit/Kontrast, erhöhen die Helligkeit auf 30 und klicken auf OK. Nun öffnen wir den Dialog Filter > Schärfen > Unscharf maskieren und stellen ein paar passende Werte ein. Anschließend wird die Aufnahme der Aktion beendet.

Zweite AktionWenn wir diese Aktion nun bei einem anderen Bild aufrufen, stellen wir fest, dass die gemachten Änderungen ohne weitere Interaktion angewendet werden. Während es beim Exportieren von Fotos zum Beispiel für eine Webseite noch Sinn macht, die Fotos alle in der selben Größe zu speichern und mit dem selben Copyright zu versehen, so ist ein generelles Aufhellen und pauschales Schärfen sicherlich längst nicht bei allen Fotos sinnvoll oder notwendig. Es wäre also schön, wenn man die Stärke dieser Filter bei jedem Aufruf der Aktion passend zur jeweiligen Datei einstellen kann. Um das zu erreichen, schauen wir uns die Einträge in dem Aktionen Fester genauer an.

Zweite Aktion - interaktivMit dem kleinen Dreieck links neben dem Namen kann man den Inhalt der Aktionen und Aktionsgruppen aufklappen. Ganz links am Rand liegen zwei Spalten mit Icons. Mit dem Haken kann man einzelne Schritte oder auch ganze Aktionen aktivieren oder deaktivieren. Deaktivierte Schritte in Aktionen werden beim Abspielen übersprungen. Daneben ist ein rechteckiger Knopf, mit dem man festlegen kann, ob ein Schritt einer Aktion interaktiv oder nicht erfolgen soll. Standardmäßig ist dieser Knopf immer ausgeschaltet. Wir klicken jetzt aber den Knöpfe neben den Schritten „Helligkeit/Kontrast“ und „Unscharf Maskieren“ an und lassen die Aktion erneut laufen.

Diesmal gehen die Dialoge auf und wir können die Werte ändern. Die Änderungen werden dabei zwar auf das Bild angewendet, nicht aber in der Aktion selbst gespeichert. Beim nächsten Ausführen der Aktion werden also weiterhin die ursprünglich eingestellten Werte als Voreinstellung angezeigt. Alternativ könnten wir natürlich für das Schärfen auch einen Smart Filter und für „Helligkeit/Kontrast“ eine Einstellungsebene verwenden.

Aktionen kombinieren

Kombinierte AktionAktionen können auch wiederum andere Aktionen aufrufen. Um das auszuprobieren, legen wir eine dritte Aktion mit dem Namen „Kompletter Export“ an. Dann selektieren wir als erstes die Aktion „Aufhellen & Schärfen“ und spielen sie ab, anschließend lassen wir die Aktion „Verkleinern & Copyright“ abspielen. Schließlich führen wir alle Ebenen zu einer zusammen und beenden die Aufnahme. In dem Aktionsfenster sehen wir jetzt, dass die neue Aktion aus drei Schritten besteht, von denen die beiden ersten jeweils anderen Aktionen aufrufen. Dabei ist jedoch zu beachten, dass die aufgerufenen Aktionen immer über ihren Namen und den der Gruppe referenziert werden. Wenn wir also eine der beiden Aktionen oder gar die ganze Gruppe umbenennen, kommt es beim Ausführen der neuen Aktion zu einem Fehler.

Stapelweise Aktionismus

Wir haben jetzt einen eigenen kleinen Workflow in Form von Aktionen gespeichert. Diesen können wir bei jedem Bild einzeln aufrufen. Richtig effektiv wird es aber, wenn wir ihn gleich per Stapelverarbeitung auf eine ganze Liste von Fotos anwenden. Dazu rufen wir den Dialog Datei > Automatisieren > Stapelverarbeitung auf und wählen ganz oben die Aktions-Gruppe „Einführung“ und dann die Aktion „Kompletter Export“ aus. Nun wählen wir noch ein Quellverzeichnis und ein Zielverzeichnis und klicken auf OK. Photoshop lädt jetzt nacheinander alle Dateien des Quellverzeichnisses, spielt die Aktion ab, und speichert das Bild im Zielverzeichnis. Je nachdem, wie viel Bilder insgesamt bearbeitet werden müssen, kann der Vorgang natürlich ein bisschen dauern. Aber es geht auf jeden Fall spürbar schneller, als wenn wir das alles von Hand durchspielen müssten.

Bereits die bis hier beschriebenen Möglichkeiten zeigen, wie mächtig Photoshop-Aktionen sind. Ganze Arbeitsabläufe lassen sich so zusammenfassen und können in Zukunft mit einem einzigen Klick gestartet werden. Dank der Möglichkeit, Dialog gezielt einzuschalten oder zu unterdrücken, lässt sich genau festlegen, welche Schritte im Ablauf jedes Mal identisch sein sollen, und welche eine Interaktion erlauben. Über das Referenzieren von „Unter-Aktionen“ lässt sich der Workflow übersichtlich strukturieren. Zudem kann man so verschiedene Abläufe, die jedoch Überschneidungen haben, leichter zusammenstellen. So ist zum Beispiel denkbar, dass man mit unterschiedlichen Kameras arbeitet, und deren Bilder teilweise andere Bearbeitungs-Schritte erfordern. In unserem Beispiel könnte man also einen zweiten Komplett-Workflow anlegen, bei dem statt Helligkeit/Kontrast der Dialog „Kurven“ aufgerufen, oder beim Schärfen andere Standardwerte verwendet werden sollen. Aber am Ende sollen auch diese Bilder die selbe Größe und die selbe Copyright-Information bekommen.

Und schließlich erlaubt die Stapelverarbeitung, selbst große Mengen an Bildern in überschaubarer Zeit strukturiert zu bearbeiten.

Probleme im Detail

Wenn wir uns jetzt die Ergebnisse der Stapelverarbeitung genauer anschauen, so werden wir eventuell ein paar Probleme erkennen. Zunächst einmal haben alle Bilder wie gewünscht die selbe Breite. Dass sich die Höhe eventuell unterscheidet, hängt an den unterschiedlichen Seitenverhältnissen der Ausgangsbilder. Dabei zeigt sich, dass die Bilder im Hochformat allesamt wesentlich größer sind, als die Bilder im Querformat. Es wurde ja auf die Breite hin skaliert, nicht auf die Länge der größten Seite.

Positionierung des TextesAußerdem kann man erkennen, dass die Copyright-Information nicht exakt an der selben Stelle steht, obwohl sie ja von der selben Aktion erzeugt wurde. Bei den Hochformat-Bildern ist sie etwas weiter vom unteren Rand entfernt. Was ist die Ursache?

Wir schauen uns hierzu die Aktion, die den Text erzeugt, etwas genauer an. Wenn man in dem Aktions-Fenster den Inhalt des entsprechenden Arbeitsschrittes aufklappt, stehen dort die Angaben zur Positionierung des Textes. Diese Angaben sind in Prozent. Und da manche Bilder höher sind als die anderen, ist bei diesen auch der Abstand zum unteren Rand größer.

Natürlich könnte man beide Probleme mit passenden Aktionen für Hochkant-Bilder lösen. Und zumindest für das Verkleinern wäre das durchaus akzeptabel. Da aber Bilder auch beschnitten werden und somit möglicherweise sehr unterschiedliche Seitenverhältnisse haben, ist das für die Positionierung der Copyright-Informationen keine vernünftige Lösung. Außerdem müssten wir für die Stapelverarbeitung die Hochkant-Bilder in ein anderen Quellverzeichnis verschieben, damit wir dann jeweils unterschiedliche Aktionen aufrufen können. Auch das ist nicht sinnvoll.

Gesucht wird also eine wirklich praktikable und flexible Lösung, die es uns ermöglicht, abhängig von verschiedenen Informationen der Bilder unterschiedliche Bearbeitungsschritte auszulösen. Und genau dies bieten uns Skripte.

Was sind Skripte?

Skripte in Photoshop sind echte Unterprogramme, die in einer Programmiersprache geschrieben sind. Das klingt für manche jetzt eventuell abschreckend, wir werden aber gleich sehen, dass es nicht weiter kompliziert ist.

Adobe Photoshop unterstützt Skripte in drei unterschiedlichen Programmiersprachen:

  • JavaScript (Windows & Mac)
  • Visual Basic (nur Windows)
  • Apple Script (nur Mac)

Da die hier gezeigten Beispiele auf beiden Plattformen laufen sollen, wird im Weiteren JavaScript verwendet. Der Funktionsumfang ist in allen drei Sprachen der selbe, mit einer Ausnahme: Innerhalb eines Skriptes können auch andere Skripte aufgerufen werden. Allerdings müssen diese aufgerufenen Skripte zwingend in JavaScript geschrieben sein. Einen weiteren großen Vorteil von JavaScript werden wir am Ende des Tutorials kennenlernen.

Ein erstes Skript

01 var doc = app.activeDocument;
02 app.preferences.rulerUnits = Units.PIXELS;
03 // Position des Textes
04 var top = doc.height – 30;
05 var left = 30;
06 // Farbe der Schrift
07 var white = new SolidColor();
08 white.rgb.red = 255;
09 white.rgb.green = 255;
10 white.rgb.blue = 255;
11 // Erzeugen einer neuen Text-Ebene
12 var layer = doc.artLayers.add();
13 layer.kind = LayerKind.TEXT;
14 var layerText = layer.textItem;
15 layerText.contents = ‚Hallo Welt‘;
16 layerText.size = 14;
17 layerText.color = white;
18 layerText.position = new Array(left, top);

Der Kasten zeigt ein erstes kleines Skript, das im Wesentlichen dem zweiten Schritt der Aktion „Verkleinern & Copyright“ in diesem Artikel entspricht. Wir speichern den Programmcode (Die Zeilennummern dürfen nicht mit übernommen werden!) in einer Textdatei mit dem Namen „Copyright.jsx“ und legen sie im Skript-Verzeichnis von Photoshop ab. Das liegt im Programmverzeichnis von Photoshop unter „Presets/Scripts“.

Wenn Sie den Inhalt des Skriptes hier kopieren, beachten Sie bitte den Hinweis am Ende dieses Artikels.

Die Datei kann mit jeden Text-Editor erstellt werden. Am besten eignet sich dazu allerdings das ExtendScript Toolkit von Adobe. Dieser Editor bietet auch direkten Zugriff auf die Befehlsreferenz und die Skripte lassen sich aus dem Editor heraus starten. Dies ist besonders dann wichtig, wenn man Fehler suchen möchte. Man kann Haltepunkte setzen, bei denen die Abarbeitung des Skripts gestoppt wird, und kann Schritt für Schritt nachvollziehen, wie das Skript abläuft.

Sie können dieses Skript – wie auch alle anderen gezeigten – auch online abrufen. Die abrufbaren Skripte enthalten zum Teil noch mehr Funktionen, die hier aus Platzgründen nicht gezeigt werden können. Die Zeilennummern stimmen also nicht überein. Jedoch sind die Skripte ausführlich kommentiert.

Wenn die Datei gespeichert wurde, starten wir Photoshop neu und finden anschließend in dem Menü Datei > Skripte den neuen Menüpunkt Copyright. Wenn wir jetzt ein Bild öffnen und anschließend das Skript über den Menüpunkt auswählen, erhalten wir in dem Bild unten links eine neue Textebene mit dem im Skript festgelegten Text.

Gratuliere! Sie haben soeben Ihr erstes Photoshop-Skript geschrieben und erfolgreich getestet.

Schauen wir uns nun dieses Skript genauer an. In der ersten Zeile wird eine Variable angelegt, die uns Zugriff auf das aktive Dokument in Photoshop bietet. Zeile zwei dient dazu, die internen Einheiten von Photoshop auf Pixel umzustellen. Wenn die Zeile weggelassen wird, wird die Einheit verwendet, die in den Photoshop-Einstellungen unter Maßeinheiten & Lineale > Maßeinheiten festgelegt ist. Da wir das Verhalten des Skriptes aber nicht dem Zufall überlassen wollen, geben wir die Einstellung hier vor.

Die dritte Zeile ist ein Kommentar. Kommentare werden mit zwei schrägen Strichen (//) eingeleitet. Photoshop ignoriert jeglichen Inhalt hinter den Strichen bis zum Zeilenende. Kommentare dürfen also auch mitten in einer Zeile beginnen. Man kann sie entweder für Hinweistexte benutzen, oder um einzelne Anweisung zwischenzeitlich abzuschalten.

Koordinaten SystemIn den beiden Zeilen vier und fünf werden zwei Variablen angelegt, die später benutzt werden, um die Position der Grundlinie des Textes festzulegen. Die Werte verwenden die in Zeile zwei eingestellte Einheit, hier also Pixel. Zu beachten ist, dass das Koordinatensystem in der oberen linken Ecke des Bildes beginnt. Unser Text soll also jeweils 30 Pixel vom linken Rand und vom unteren Rand entfernt sein.

Die Zeilen sieben bis zehn legen die Farbe fest, in der der Text geschrieben werden soll. Ab Zeile 12 wird es jetzt ernst. Zunächst wird eine neue Ebene in dem Dokument erzeugt, dann wird der Typ der Ebene in eine Text-Ebene geändert. In Zeile 14 erhalten wir Zugriff auf die Text-Informationen der neuen Ebene. Wir setzen den Inhalt des Textes (Zeile 15), geben die Schriftgröße vor (Zeile 16), die Farbe der Schrift (Zeile 17) und schließlich die Position (Zeile 18). Für alle anderen Informationen, die man setzen könnte, wie zum Beispiel die Ausrichtung des Textes oder die Schriftart, werden die jeweiligen Standardwerte verwendet. So würde zum Beispiel ohne die Zeile 17 die Schrift in der aktuell eingestellten Vordergrundfarbe geschrieben.

Wenn wir das Skript mit verschiedenen Bildern ausprobieren, stellen wir fest, dass der Text immer exakt an der selben Position bezogen auf die linke untere Ecke erscheint. Die Größe oder das Seitenformat des Bildes spielen also keine Rolle mehr. Damit haben wir eines der beiden Probleme, die wir mit den Aktionen hatten, gelöst.

Verbessertes Verkleinern

Als nächstes nehmen wir uns das zweite Problem vor. Wir wollen das Bild so verkleinern, dass die längste Seite des Bildes 600 Pixel groß ist. Der Code dafür ist in dem Kasten dargestellt.

01 var storedUnits = app.preferences.rulerUnits;
02 app.preferences.rulerUnits = Units.PIXELS;
03
04 var doc = app.activeDocument;
05 var origSize = Math.max(doc.height, doc.width);
06 var factor = 600 / origSize;
07 var newHeight = doc.height * factor;
08 var newWidth = doc.width * factor;
09
10 doc.resizeImage(newWidth, newHeight,
11     doc.resolution, ResampleMethod.BICUBIC);
12
13 app.preferences.rulerUnits = storedUnits;

Ähnlich wie beim ersten Skript setzen wir zunächst die Einheiten wieder auf Pixel. Davor allerdings speichern wir uns die aktuellen Einstellungen (Zeile 1), um sie am Ende wieder zurück zu setzen (Zeile 13). Das hat zwar mit dem Verkleinern nichts zu tun, aber damit ist Photoshop am Ende wieder in dem selben Zustand wie vor dem Aufruf und wir zerstören nicht die Nutzereinstellungen.

In dem Hautteil des Skriptes wird zunächst die Länge der größten Seite (Zeile 5) und anschließend der Skalierungsfaktor (Zeile 6) ermittelt. Mit diesem Faktor werden nun die neue Werte für Höhe und Breite berechnet (Zeilen 7 & 8) und das Bild entsprechend in der Größe geändert (Zeilen 10 & 11). Beim Skalieren muss noch die Auflösung angegeben werden, die wir hier jedoch nicht verändern, sondern einfach vom aktuellen Dokument übernehmen. Außerdem muss der Algorithmus für das Verkleinern festgelegt werden. Hierfür können die Werte angegeben werden, die man in dem Dialog Bild > Bild Größe auswählen kann. Wie die Werte für die anderen Algorithmen genau heißen, kann in der Photoshop JavaScript Referenz nachgelesen werden.

Ablaufschritte des SkriptesWir speichern das zweite Skript unter dem Namen „Verkleinern.jsx“ in dem Skripte-Verzeichnis und starten Photoshop neu. Auch dieses Skript finden wir in dem Menü Datei > Skripte. Wenn wir es aufrufen, wird das geladene Bild so skaliert, dass die größte Seite des Bildes 600 Pixel lang ist. Das Seitenverhältnis des Bildes bleibt dabei erhalten.

Die beiden vorgestellten Skripte lösen zwar die Probleme der Aktionen, die Lösung ist aber noch nicht schön. Rufen wir zum Beispiel das Copyright Skript auf, und schauen anschließend in die Bearbeitungs-Historie des Bildes, so stehen dort wesentlich mehr Einträge, als dies bei der Version mit der Aktion der Fall war. Im Grunde wird jeder einzelne Befehl als Einzelschritt in der Historie aufgelistet. Bei längeren Skripten könnte das sehr schnell recht unübersichtlich werden.

01 /*
02 Wenn debug auf ‚false‘ steht, wird das Skript in
03 einem einzigen Schritt ausgeführt.
04 */
05 var debug = true;
06
07 var message = ‚Hallo Welt‘;
08
09 function addCopyright() {
10     var doc = app.activeDocument;
11     app.preferences.rulerUnits = Units.PIXELS;
12     // Position des Textes
13     var top = doc.height – 30;
14     var left = 30;
15     // Farbe der Schrift
16     var white = new SolidColor();
17     white.rgb.red = 255;
18     white.rgb.green = 255;
19     white.rgb.blue = 255;
20     // Erzeugen einer neuen Text-Ebene
21     var layer = doc.artLayers.add();
22     layer.kind = LayerKind.TEXT;
23     var layerText = layer.textItem;
24     layerText.contents = message;
25     layerText.size = 14;
26     layerText.color = white;
27     layerText.position = new Array(left, top);
28 }
29
30 if (debug) {
31     addCopyright();
32 } else {
33     app.activeDocument.suspendHistory(
34         ‚Copyright erzeugen‘, ‚addCopyright();‘);
35 }

Der Kasten zeigt die überarbeitete Version des Copyright-Skriptes. Die Änderung kann einfach in der bestehenden Datei vorgenommen werden, nach dem Speichern muss Photoshop auch nicht neugestartet werden. Wenn wir die bestehenden Skripte nur ändern, sind die Änderungen nach jedem Speichern sofort verfügbar.

Am Kopf der neuen Version des Skriptes steht ein mehrzeiliger Kommentar. Solche Kommentare werden durch /* eingeleitet und mit */ beendet.

In Zeile 5 wird als erstes eine Variable definiert, die später benutzt wird, um die Art der Ausführung zu steuern. Diese Steuerung ist nicht zwingend notwendig, erleichtert aber das Testen des Skriptes. Solange wir noch an dem Skript arbeiten, lassen wir den Wert auf true. Sobald wir fertig sind, wird er auf false gesetzt.

Die Zeile 7 definiert eine Variable mit dem Text, der später auf dem Bild erscheint. Der Vorteil, den Text hier als Variable zu definieren, ist vor allem der, dass wir später den Text leichter wiederfinden, wenn wir ihn mal ändern wollen. Das restliche Programm ist von der Änderung dann nicht mehr betroffen.

In den Zeilen 9 bis 28 wird eine Funktion mit dem Namen addCopyright definiert. Der Inhalt der Funktion ist im Grunde identisch mit der ersten Version des Skriptes. Nur in Zeile 24 wird jetzt der Text aus der zuvor definierten Variablen verwendet. Die Art der Ausführung des Skriptes wird in den Zeilen 30 bis 35 gesteuert. Wenn die Variable debug auf true steht, wird einfach in Zeile 31 die zuvor definierte Funktion aufgerufen. Das Verhalten des Skriptes ist somit quasi identisch mit dem der ersten Version.

Ändern wir die Variable debug aber auf false, so wird statt dessen Zeile 34 ausgeführt. Diese hält die Protokollierung der Einzelschritte an und führt statt dessen die Funktion in einem einzigen Protokoll-Schritt aus. Das erste Argument der Funktion legt dabei den Text fest, der in der Historie angezeigt werden soll, das zweite Argument enthält den JavaScript-Code, der in diesem Schritt aufgeführt werden soll.

Neben der Möglichkeit, Teile von Skripten oder ganze Skripte in einem einzelnen Arbeitsschritt auszuführen, zeigt uns die zweite Version des Copyright-Skriptes noch ein paar weitere wichtige Dinge. Mit Hilfe von Funktionen können wir den Code sinnvoll strukturieren, um so einen besseren Überblick über den Ablauf zu bekommen. Außerdem sehen wir, wie mit Hilfe von Bedingungen die Ausführung des Skriptes unterschiedliche Wege nehmen kann. Weitere Beispiele hierzu sind in der Skriptsammlung zu diesem Artikel zu finden. Das Skript „BedingtesVerkleinern.jsx“ zeigt zum Beispiel, wie man beim Verkleinern das Seitenverhältnis berücksichtigen kann. Das Skript lässt bei Panorama-Aufnahmen größere Bildgrößen zu als bei Standardformaten. Das Skript „SchrittweisesVerkleinern.jsx“ zeigt zudem, wie man ein Bild automatisch in mehreren Schritten verkleinert.

Einfache Benutzung der Skripte

Softwaretechnisch sind unsere Skripte nun bereit für den Einsatz, die Anwendung kann aber noch verbessert werden.

Der Text, der im Menü erscheint, ist bislang immer der Dateiname des Skriptes. Es wäre schön, wenn wir den unabhängig vom Namen festlegen könnten. Außerdem wollen wir festlegen, in welchem Menü die Skripte erscheinen. Beides erreichen wir, in dem wir am Anfang der Skripte jeweils einen entsprechenden Kommentar einbauen, um Photoshop ein paar zusätzliche Informationen über die Skripte zu geben.

Der Kommentar wird in Form eines XML-Textes geschrieben. XML ist eine sehr weit verbreitete Sprache zur Definition von strukturierten Informationen. In XML werden alle Informationen in so genannten „Tags“ (engl. für „Marken“) eingeschlossen, die immer in spitzen Klammern stehen. Der Hinweis-Kommentar für Photoshop steht in dem Tag „javascriptresource“. Am besten platziert man den Kommentar ganz am Anfang der Datei. Photoshop kann ihn nur finden, wenn er innerhalb der ersten 10.240 Zeichen steht, denn nur dieser Teil der Skripte wird schon beim Starten von Photoshop eingelesen. Bei Änderungen an dem beschreibenden Kommentar muss Photoshop außerdem jedes Mal neu gestartet werden.

/*
<javascriptresource>
    <name>Verkleinern</name>
    <about>Beispiel-Skript zum Verkleinern von Bildern.</about>
    <menu>filter</menu>
    <category>Einfuehrung</category>
    <enableinfo>true</enableinfo>
</javascriptresource>
*/

BeschreibungsdialogIn dem Tag „name“ steht der Name des Skriptes, der im Menü erscheint. Soll das Skript mehrere Sprachen unterstützen, so ist es möglich, den Text, wie auch die Beschreibung, übersetzbar zu machen.

Der Tag „about“ enthält einen beschreibenden Text über das Skript. Wenn man diesen Tag angibt, erscheint ein neuer Menü-Eintrag mit dem Namen des Skriptes im Menü Hilfe > Über Plug-Ins (Mac: Photoshop > Über Plug-Ins). Klickt man diesen Eintrag an, so erscheint ein Hinweisdialog mit dem Text des about-Tags.

Mit dem Tag „menu“ wird festgelegt, in welchem Menü das Skript aufgeführt werden soll. Hier sind bislang nur drei Werte zugelassen:

  • filter – Das Skript erscheint im Menü Filter.
  • automate – Das Skript erscheint im Menü Datei > Automatisierung.
  • help – Das Skript erscheint im Menü Hilfe.

Wird der Tag weggelassen, erscheint das Skript im Menü Datei > Skripte.

Der Tag „category“ dient dazu, mehrere Skripte im Menü zu gruppieren. Alle Skripte, die die selbe Kategorie haben, werden in einer Gruppe zusammengefasst und durch Linien von den anderen Menüeinträge abgegrenzt. Der Name der Kategorie selbst spielt keine Rolle und wird auch nirgendwo angezeigt.

Mit dem Tag „enableinfo“ kann eine Bedingung definiert werden, wann der Menüpunkt auswählbar sein soll. Wenn der Eintrag komplett weggelassen wird, kann das Skript immer aufgerufen werden. Steht in dem Tag einfach nur true drin, dann ist das Skript nur verfügbar, wenn ein Dokument in Photoshop geladen ist. Das ist gut, denn ein Aufruf unserer Skripte ohne geöffnetes Bild würde zu einer Fehlermeldung führen. Man kann aber auch weitergehende Bedingungen stellen. Manche Skripte können vielleicht nur bei Bildern angewendet werden, die als RGB-Datei vorliegen, oder bei denen gerade eine Auswahl aktiv ist. Das Skript zum Verkleinern könnte zum Beispiel folgende Bedingung haben:

<enableinfo>max(PSHOP_ImageWidth, PSHOP_ImageHeight) > 600</enableinfo>

Damit ist das Skript nur verfügbar, wenn die größte Seite des aktuellen Bildes größer als 600 Pixel ist (PSHOP_ImageWidth und PSHOP_ImageHeight geben die Größe immer in Pixeln an, unabhängig von den jeweils aktuellen Voreinstellungen in Photoshop.). Eine ausführliche Beschreibung der Syntax für die Bedingungen sowie der übrigen möglichen Informationen in dem Beschreibungs-Kommentar finden sich in der Photoshop JavaScript Referenz.

Automatisierte Skripte

Wir haben in dieser Einführung zwei unterschiedliche Möglichkeiten kennengelernt, um Arbeitsschritte in Photoshop zu automatisieren und zu vereinfachen. Aktionen sind dabei sicherlich schneller und einfacher anzulegen. Aber wir haben gesehen, dass sie im Vergleich zu Skripten auch weniger flexibel und leistungsfähig sind. Was liegt also näher, als beide Techniken mit einander zu verbinden?

Eine Aktion kann nicht nur die Standard-Funktionen von Photoshop oder andere Aktionen, sondern selbstverständlich auch unsere selbstgeschriebenen Skripte ausführen. Somit kann man leicht die Einfachheit von Aktionen mit der Leistungsfähigkeit von Skripten kombinieren.

Zu diesem Zweck legen wir eine neue Aktion „Kompletter Export 2“ an. In ihr rufen wir zunächst die Aktion „Aufhellen und Schärfen“ auf, anschließend das Verkleinern-Skript und dann das Copyright-Skript. Zum Schluss werden alle Ebenen zu einer zusammengefasst. Wir haben jetzt eine einzige Aktion, die unseren kompletten Workflow bestehend aus verschiedenen Aktionen und Skripten für uns abarbeitet. Über den schon zuvor gezeigten Weg der Stapelverarbeitung können wir alle Bilder unabhängig von ihrer Größe oder ihrem Seitenformat einheitlich bearbeiten lassen.

Veröffentlichen von Skripten

Hat man eigene Skripte entwickelt, so möchte man diese möglicherweise anderen Nutzern zur Verfügung stellen. Dabei kann es passieren, dass man nicht möchte, dass andere Nutzer den Inhalt der Skripte lesen können. Für diesen Fall bietet das ExtendScript Toolkit von Adobe die Möglichkeit, Skripte als „Binärdatei“ zu exportieren. Die Datei wird dabei verschlüsselt und enthält keinen verständlichen Inhalt mehr. Es ist auch nicht möglich, die Dateien zurück zu übersetzen. Sie können ihre Skripte so also problemlos verteilen, ohne Angst haben zu müssen, dass andere Ihren Code einsehen können.

Abschließende Worte

Dieser Artikel ist gedacht als eine erste Einführung in die verschiedenen Möglichkeiten der Automatisierung in Photoshop. Verschiedenen weitergehende Möglichkeiten wurden bewusst nicht behandelt. So ist es mit Skripten zum Beispiel möglich auf Funktionen anderer Anwendungen der Adobe Photoshop Suite wie Bridge oder InDesign zuzugreifen. Auch ist es möglich, in einem Skript andere Skripte, Aktionen oder Filter aufzurufen, sowie eigene Dialoge zu erzeugen. Diese Themen werden möglicherweise in einem zukünftigen zweiten Teil behandelt.



Wenn Sie den Programm-Code der Skripte auf dieser Seite direkt aus der Seite kopieren, kann es passieren, dass eine Zeichen fehlerhaft übernommen werden. Dies betrifft sowohl das Minuszeichen, als auch die Anführungszeichen. Ich empfehle daher, das Archiv mit den Skripten runterzuladen und die Dateien dort zu verwenden.