Leistungsfähige Aufgabenautomatisierung mit Photoshop-Scripting

Aktionen sind sehr beliebt. Sie sind einfach zu bedienen und können Ihnen viel Zeit sparen, aber am Ende des Tages sind sie nicht sehr leistungsfähig und bieten nur eine geringe Vielseitigkeit. Hier setzen die Skriptfunktionen von Photoshop an. Wir zeigen Ihnen die fast unendlichen Möglichkeiten, die Photoshop-Scripting bietet.


Aktionen vs. Skripte

Eine Aktion ist einfach eine Möglichkeit, eine Reihe von Schritten aufzunehmen, damit wir sie immer wieder abspielen können. Wenn Sie ein rotes Quadrat mit 50 x 50 Pixeln durch Drücken einer Taste schnell zeichnen möchten, nehmen Sie es einfach einmal auf, und spielen Sie dann die Aktion, wenn Sie sie brauchen. Sie sind fertig. Aber was ist, wenn Sie manchmal ein rotes Quadrat von 50 Pixeln benötigen und manchmal ein blaues Quadrat von 100 Pixeln? Nun, Sie müssten eine weitere Aktion für die zweite Figur aufnehmen. Aktionen bieten eine sehr geringe Vielseitigkeit, da die aufgezeichneten Schritte statisch sind - ihr Verhalten ändert sich nicht in Abhängigkeit von externen Variablen.

Mit Photoshop-Scripting können Sie hinzufügen Bedingte Logik, So entscheidet das Skript automatisch anhand der aktuellen Situation oder der Benutzereingabe. Im vorherigen Beispiel könnte ein Photoshop-Skript den Benutzer beispielsweise nach der Breite und Farbe des Quadrats fragen,
und dann richtig rendern. Außerdem bieten Skripte viele weitere Vorteile gegenüber Aktionen, wie z. B. erweiterte Dateibehandlung, Unterstützung mehrerer Anwendungen usw.


Grundlagen der Photoshop-Skripterstellung

Ein Photoshop-Skript ist eine Textdatei mit Code, die das Programm anweist, bestimmte Aufgaben auszuführen. Diese Skripts können in drei verschiedenen Skriptsprachen geschrieben werden. Wenn Sie Mac OS verwenden, können Sie AppleScript und JavaScript verwenden. Unter Windows können Sie auch VBScript und JavaScript verwenden. Da JavaScript auf beiden Plattformen vollständig unterstützt wird, ist es die beste Wahl, um sicherzustellen, dass unser Skript die größte Zielgruppe erreicht. In diesem Artikel werden wir uns darauf konzentrieren. Außerdem ist JavaScript die am weitesten verbreitete clientseitige Skriptsprache. Daher haben Sie wahrscheinlich schon früher davon gehört.

Die Skripting-Engine von Photoshop bietet uns Möglichkeiten, die verschiedenen Elemente der Anwendung wie Ebenen, Hilfslinien, Kanäle, Dokumente usw. zu bearbeiten. Nahezu jedes einzelne Element in Photoshop kann anhand eines Skripts untersucht und modifiziert werden. Diese werden im Photoshop Document Object Model angezeigt. In diesem Artikel werden wir mit einigen grundlegenden Elementen arbeiten, aber es gibt viele, die Sie in der offiziellen Dokumentation zu Photoshop Scripting sehen können.

Im Lieferumfang von Photoshop ist ein Programm namens Adobe ExtendScript Toolkit CS5 enthalten. Es ist eine integrierte Entwicklungsumgebung für Skripte, nicht nur für Photoshop, sondern für alle Mitglieder der Creative Suite. Um es einfach zu halten, verwenden wir einen einfachen Texteditor wie Notepad. Für umfangreiche Skripte bietet Adobe ExtendScript Toolkit jedoch eine Vielzahl von Tools an, z. B. die automatische Vervollständigung von Code, eine integrierte Hilfe und einen Debugger.

Gehen wir also ohne weiteres in den Ordner Presets / Scripts in Ihrem Photoshop-Verzeichnis, erstellen Sie eine leere Textdatei mit dem Namen firstScript.jsx und öffnen Sie sie mit Ihrem bevorzugten Texteditor.


Was in der App passiert, bleibt in der App

Wenn wir uns mit Photoshop-Skripts beschäftigen, beginnt alles mit dem "app" -Objekt. Es stellt die Anwendung dar und enthält alle anderen Objekte auf hierarchische Weise. In diesem ersten Schritt werden einige grundlegende Eigenschaften des "app" -Objekts betrachtet.

Gehen Sie zum Texteditor und geben Sie Folgendes in firstScript.jsx ein

alert ("Sie verwenden die Photoshop-Version" + app.version);

Starten Sie dann Photoshop und gehen Sie zu Datei> Skripts> firstScript. In einem Warnfeld wird angezeigt, dass "Sie verwenden Photoshop Version 12.0.0" (oder die Version, die Sie verwenden). Die "Alert" -Funktion zeigt eine Nachricht, eine Zeichenfolge mit dem Text und der Version der Anwendung, die aus der "Version" -Eigenschaft des "App" -Objekts gelesen wird. In JavaScript können Sie mit "." Auf die Eigenschaften und untergeordneten Objekte eines Objekts zugreifen. Operator, wie in "app.version".

In Photoshop ist das grundlegende Arbeitsumfeld das Dokument. Das "app" -Objekt enthält eine Sammlung namens "Dokumente", die offensichtlich die Menge der in Photoshop geöffneten Dokumente darstellt. Gehen wir zurück zum Editor und ersetzen Sie den Inhalt von firstScript.jsx durch Folgendes:

if (app.documents.length> 0) alert ("Es gibt" + app.documents.length + "Dokumente öffnen"));  else alert ("Es gibt keine offenen Dokumente"); 

Wenn Sie das Skript starten (Datei> Skripts> firstScript), ändert sich die Warnmeldung abhängig von der Anzahl der aktuell geöffneten Dokumente. Der Code ist sehr einfach. In der ersten Zeile wird geprüft, ob die Anzahl der geöffneten Dokumente (d. H. Die Länge der Dokumentensätze in der App) größer als Null ist. Dabei wird eine Nachricht mit dieser Anzahl angezeigt. Andernfalls wird eine Meldung angezeigt, dass keine offenen Dokumente vorhanden sind. Einfach, nicht wahr? Aber das sieht bisher nicht sehr nützlich aus.


Führen Sie Ihre Arbeit

Versuchen wir es mit einem nützlicheren Beispiel. Angenommen, Sie möchten Ihr Dokument in gleich große Spalten unterteilen. Wenn Sie dies manuell tun, müssen Sie die Breite des Dokuments messen, es durch die Anzahl der Spalten teilen und dann die Hilfslinien vorsichtig platzieren. Was ist, wenn Sie zwölf Spalten brauchen? Das wäre eine totale Zeitverschwendung. Lassen Sie uns einen Code sehen, der diese Aufgabe erfüllt:

 if (app.documents.length> 0) var numberColumns = parseInt (Eingabeaufforderung ("Wie viele Spalten benötigen Sie?", 5)); var doc = app.activeDocument; var documentWidth = doc.width; var columnWidth = documentWidth / numberColumns; für (i = 0; i <= numberColumns; ++i) doc.guides.add(Direction.VERTICAL, i * columnWidth);  

Hab keine Angst! Der Code ist sehr einfach. Sie wissen bereits, was die erste Zeile bedeutet: "Wenn mindestens ein Dokument geöffnet ist, führen Sie folgende Schritte aus". Die nächste Zeile fragt den Benutzer mit der "prompt" -Funktion nach der Anzahl der Spalten und übergibt sein Ergebnis an die "parseInt" -Funktion, die es bequem in eine Ganzzahl umwandelt. Das Ergebnis wird in der Variablen "numberColumns" gespeichert. Falls Sie es nicht wissen, werden in Programmiersprachen Variablen verwendet, um Werte zu speichern. Wenn Sie also einen bestimmten Wert speichern möchten, verwenden Sie eine Variable.

Die dritte Zeile erstellt eine neue Variable namens "doc", die das aktive Dokument darstellt. Die vierte Zeile liest die Breite des aktuellen Dokuments und speichert sie in der Variablen "documentWidth". Die fünfte Zeile berechnet die Breite jeder Spalte durch Division der Gesamtbreite durch die Anzahl der Spalten. Schließlich startet die sechste Zeile eine Schleife, die sich einmal pro Spalte wiederholt (plus noch einmal für die letzte Anleitung). In jeder Iteration enthält die Variable "i" die aktuelle Spaltennummer: 0, 1, 2, 3? Die septh-Zeile fügt dem aktuellen Dokument eine vertikale Hilfslinie an der richtigen Position hinzu.

Um den Code auszuprobieren, ist er genauso wie zuvor. Ersetzen Sie den Inhalt unserer firstScript-Datei durch den Code, und wechseln Sie zu Datei> Skripts> firstScript.


Ändern Sie Ihren gesamten Text gleichzeitig

Sie haben also ein tolles Webdesign mit der immer schönen Helvetica erstellt, aber es sieht so aus, als hätte der Client es nicht installiert, er bevorzugt Arial. Außerdem möchte er sicherstellen, dass jeder das Urheberrecht des Materials kennt, sodass er darauf besteht, in jedem Textelement einen Urheberrechtshinweis hinzuzufügen. "Kein Problem, ich kenne Photoshop Scripting!", Antworten Sie. Mal sehen, wie es geht:

 if (app.documents.length! = 0) var doc = app.activeDocument; für (i = 0; i < doc.artLayers.length; ++i) var layer = doc.artLayers[i]; if(layer.kind == LayerKind.TEXT) layer.textItem.font = "ArialMT"; layer.textItem.contents += " ? 2011 Envato";   

Die ersten beiden Zeilen sind bereits bekannt. Dann gibt es hier ein neues Element, die Layer-Sammlung. In Photoshop-Skripting gibt es zwei Arten von Ebenen: Zum einen gibt es die "Ebenensätze", die im Wesentlichen Gruppen sind, und zum anderen die "Kunstebenen", die alle anderen Arten von Ebenen enthalten: normale Ebenen, Textebenen, Einstellungsebenen usw. Unser Dokumentobjekt ("app.activeDocument") verfügt über eine Eigenschaft mit dem Namen "artLayers", um nur auf die Kunst-Layer zuzugreifen, eine weitere Eigenschaft mit dem Namen "layerSets", um auf die Layer-Sets zuzugreifen eine Eigenschaft, die einfach als "Ebenen" bezeichnet wird und beide vorherigen Sätze enthält.

In unserem Code durchlaufen wir die Menge der Kunstebenen unseres Dokuments. In jeder Iteration speichern wir unsere aktuelle Ebene in der Variablen "Ebene". Dann prüfen wir, ob die Art der Ebene "LayerKind. TEXT" ist, die eine Textebene darstellt. In diesem Fall greifen wir auf die Eigenschaft textItem unserer Ebene zu, die alle Eigenschaften des Textes enthält, und ändern das Attribut "font" in "ArialMT" (wir müssen den PostScript-Namen der Schriftart verwenden). Außerdem fügen wir dem Inhalt der Ebene den Copyright-Hinweis hinzu, indem Sie den Operator "+ =" in der Eigenschaft "contents" verwenden.


Lass dort Quadrate sein

Wir haben das schwerste für das Ende gelassen. Das Beispiel, das wir zu Beginn des Artikels vorgeschlagen haben, bestand darin, Quadrate automatisch zu erstellen, indem lediglich die Größe und die Farbe ausgewählt wurden. Nun, das ist eine ziemlich einfache Aufgabe für ein Skript.

if (app.documents.length> 0) var doc = app.activeDocument; var squareSize = parseInt (Eingabeaufforderung ("Wählen Sie die Größe des Quadrats", 50)); var squareColor = neue RGBColor; squareColor.hexValue = Eingabeaufforderung ("Wählen Sie die Farbe des Quadrats (hexadezimal)", "ff0000"); var newLayer = doc.artLayers.add (); newLayer.name = "Square -" + squareSize + "-" + squareColor.hexValue; selectedRegion = Array (Array (0,0), Array (0, Quadratgröße), Array (Quadratgröße, Quadratgröße), Array (Quadratgröße, 0)); doc.selection.select (selectedRegion); doc.selection.fill (squareColor); doc.selection.deselect (); 

Dies ist der längste Code, den wir bisher gesehen haben, aber es ist nicht schwer zu verstehen. In der dritten Zeile fragen wir den Benutzer nach der Größe des Quadrats und speichern es in der Variablen "squareSize". Als Nächstes erstellen wir eine neue RGB-Farbe, um die Farbe des Quadrats festzulegen, und lesen den Hexadezimalwert aus der Benutzereingabe.

Der nächste Schritt ist das Erstellen einer Ebene. Wir greifen auf das Set "artLayers" aus dem aktiven Dokument zu und fügen mit seiner "add" -Methode eine neue Ebene hinzu, die einen Verweis darauf in der Variablen "newLayer" speichert. Als nächstes ändern wir seinen Namen entsprechend.

Der letzte Schritt ist die Auswahl. Wir erstellen ein Array von Arrays, das die Koordinaten jeder Ecke der Auswahl angibt. Dann übergeben wir diesen Bereich an die "select" -Methode des "selection" -Objekts des aktiven Dokuments.

Zum Schluss füllen wir die Auswahl mit der zuvor definierten Farbe und heben dann die Auswahl auf. Unser quadratischer Schöpfer ist fertig!


Fazit

Skripte haben sich als wesentlich leistungsfähiger und konfigurierbarer als Aktionen erwiesen. Sie sind sicherlich etwas schwieriger zu erstellen, aber die Ergebnisse sind die Anstrengung wert. Außerdem gibt es eine zunehmend große und unterstützende Community, und es wurden sogar vollständige Javascript-Bibliotheken für Photoshop-Skripte erstellt, wie z. B. xtools, das Open Source ist. Diese Bibliotheken versuchen, einige Lücken zu schließen, die andernfalls Lösungen auf niedrigerer Ebene erfordern würden.

Angesichts der steigenden Beliebtheit von Action Packs für wenig Geld, denke ich, gibt es möglicherweise einen neuen Markt für Script Packs, insbesondere
für komplexe Layoutaufgaben und ähnliches. Ich hoffe, dass Sie mit diesem Artikel die Grundlagen des Photoshop-Skripts gelernt haben - viel Spaß beim Schreiben Ihrer eigenen Skripts!

S.: Jetzt ist es vielleicht eine gute Gelegenheit, sich NetTuts Javascript aus der Null-Videoserie anzuschauen, wodurch Sie die JavaScript-Grundlagen von Anfang bis Ende verstehen können.