1. Design & Illustration
  2. Scripts

Scripting Illustrator - Konvertieren einer flachen Prozessfarbe in einen passenden Farbverlauf

by
Read Time:21 minsLanguages:

Spanish (Español) translation by Federicco Ancie (you can also view the original English article)

Wir alle sind mit Adobe Illustrator und seiner Benutzeroberfläche ziemlich vertraut. Bei unseren täglichen kreativen Aufgaben verwenden wir viele Funktionen, wie zum Beispiel: Menü, Paletten, Farben, Plug-Ins und Tools. Wir verwenden diese Funktionen in Form einer Benutzeroberfläche. Diese UI-Funktionen werden uns durch verschiedene Skripte und Plug-Ins zur Verfügung gestellt.

Auf einfachere Weise können wir Skripte codieren, um Aufgaben zu automatisieren oder einen Effekt in Illustrator zu erzielen. Folgen Sie den Anweisungen, um zu erfahren, wie das geht. In diesem Tutorial werden wir in Javascript ein Skript codieren, das ein flaches prozessgefülltes Objekt in seinen passenden Farbverlauf umwandelt.

Vektor Plus

Möchten Sie Zugriff auf die vollständigen Vector Source-Dateien und herunterladbare Kopien jedes Tutorials, einschließlich dieses Tutorials? Werden Sie Mitglied bei Vector Plus für nur 9 $im Monat.

Anleitungsdetails

  • Programm: Adobe Illustrator CS3 und ExtendedScript Toolkit
  • Schwierigkeit: Mittel
  • Geschätzte Fertigstellungszeit:3 bis 4 Stunden

ZIEL des Skripts

Wir möchten, dass dieses Skript eine sehr einfache Aufgabe ausführt. Wenn ein Benutzer in Adobe Illustrator einige Objekte auswählt, die mit einer flachen CMYK-Farbe gefüllt sind, und dieses Skript ausführt; die Objekte sollen in eine passende CMYK-Verlaufsfüllung umgewandelt werden. Der Ausgabegradient ähnelt in gewisser Weise einem Farbverlaufsüberlagerungseffekt im Multiplikationsmodus. Dies wird im Bild unten gezeigt.

Daher ist das Ziel unseres Skripts, ein flaches CMYK-gefülltes Objekt in einen Farbverlauf von Dunkel zu Hell umzuwandeln. Dies ist eine einfache Aktion, die eine gute Übung ist, um zu lernen, wie man Skripte für Illustrator erstellt.

Logik und Algorithmus

Die Logik zum Umwandeln einer flachen Farbe in einen Dunkel-zu-Hell-Verlauf kann in fünf einfachen Schritten verstanden werden:

  • Schritt 1: Wählen Sie die Farbe des aktuellen Objekts. d.h. currentColor = Farbe des aktuell ausgewählten Objekts.
  • Schritt 2: Erstellen Sie eine neue Verlaufsfarbe mit zwei Rampenstopps: startColor und endColor.
  • Schritt 3: startColor = currentColor – gShift d.h. die Originalfarbe aufhellen.
  • Schritt 4: endColor = currentColor + gShift d.h. die Originalfarbe abdunkeln.
  • Schritt 5: Wenden Sie den neuen Farbverlauf mit startColor und endColor auf das Objekt an.

Dabei ist gShift der Betrag der Gradientenverschiebung, der vom Benutzer eingegeben wird. Der obige Algorithmus ist aus der unten gezeigten bildlichen Darstellung leicht zu verstehen.

Abgesehen von der Kernlogik werden wir einige Validierungen und Überprüfungen für die ordnungsgemäße Funktion dieses Skripts implementieren. Diese Validierungen werden in verschiedenen Phasen dieses Tutorials behandelt. Bevor wir zum eigentlichen Tutorial übergehen, machen wir uns mit einigen Voraussetzungen vertraut.

Einführung in die Skripterstellung

Dieses Tutorial erfordert einige Grundkenntnisse der Skripterstellung und ihrer Umgebung. Um sich mit der Scripting-Umgebung von Illustrator vertraut zu machen, können Sie einen kurzen Blick in die Dokumentation im Installationsordner Ihres Illustrators werfen, gehen Sie zu Installationsverzeichnis \ Adobe \ Adobe Illustrator CS3 \ Scripting \ Documentation. Hier finden Sie folgende Dokumente zum Einstieg in JavaScript:

  • Adobe Intro to Scripting.pdf
  • Illustrator CS3 Scripting Guide.pdf
  • Illustrator CS3 JavaScript-Referenz.pdf
  • Handbuch zu JavaScript-Tools CS3.pdf

Arten von Skripten

Es gibt drei Arten von Skripten, die wir für Illustrator schreiben können. Diese sind: AppleScript, JavaScript und VBScript. Da JavaScript sowohl unter Windows als auch unter Mac OS unterstützt wird, werden wir unsere Logik in JavaScript codieren. Syntax und Notationen sind dem Standard-JavaScript sehr ähnlich. Der einzige Unterschied besteht in der Erweiterung. Für Illustrator bezeichnen wir alle JavaScript-Dateien mit der Erweiterung .jsx anstelle der üblichen Erweiterung .js.

notwendige Werkzeuge

Sie können jedoch das gesamte JavaScript in jedem Ihrer bevorzugten Texteditoren codieren; Es wird empfohlen, das Adobe ExtendedScript Toolkit zu verwenden. Mit dieser Anwendung können wir unseren Code synchron mit Illustrator ausführen, debuggen, testen und überprüfen.

Hinweis: In diesem Tutorial bezeichnen wir ExtendedScript Toolkit mit einer Kurzform - ESTK.

Schritt 1

Öffnen Sie das Adobe ExtendedScript Toolkit und erstellen Sie eine neue JavaScript-Datei. Wählen Sie als Nächstes Adobe Illustrator aus der Dropdown-Liste für die Zielanwendung aus. Dies teilt dem ESTK mit, dass wir JavaScript für eine bestimmte Anwendung schreiben, z. B. Adobe Illustrator.

Schritt 2 - Schreiben Sie ein einfaches Code-Snippet

Fügen Sie im Codebearbeitungsbereich die folgenden Codezeilen ein:

Im obigen Code prüfen wir, ob derzeit Dokumente in Illustrator geöffnet sind. Dies geschieht über

app.documents.length. d.h. das Objekt der obersten Ebene in jedem Adobe-Anwendungs-DOM ist das Anwendungsobjekt. Als nächstes folgt das Dokumentobjekt, das weitere Objekte wie Farben, Ebenen, Text, Seiten usw. enthält. Speichern Sie diese Datei auf Ihrer Festplatte als "test.jsx".

Schritt 2.1 - Ausführen des Skripts

Es gibt zwei Möglichkeiten, das Skript auszuführen:

1. Ausführung von ESTK

Wenn Sie Ihr Skript über ESTK ausführen möchten, drücken Sie die Wiedergabetaste wie unten gezeigt.

Dadurch wird automatisch die Adobe Illustrator-Anwendung gestartet und die Warnmeldung generiert. Sie können die Ausführung anhalten oder stoppen, indem Sie die Pause- bzw. Stopptaste drücken.

2. Ausführen von Illustrator

Um dieses Skript aus Illustrator auszuführen, gehen Sie zu Datei  > Skripte  > Anderes Skript (Befehl + F12) und suchen Sie Ihre neu erstellte Datei "test.jsx". Nachdem Sie auf Öffnen geklickt haben, wird das Skript ausgeführt.

Was hast du denn gesehen? Eine Warnmeldung "Keine Dokumente verfügbar."

Erstellen Sie als Nächstes ein paar neue Dokumente in Illustrator und führen Sie dieses Skript erneut aus. Diesmal sehen Sie die Warnung "Dokumente sind verfügbar".

Bisher haben wir ein kleines Stück Code geschrieben und getestet. Dies diente als Aufwärmübung, um sich mit ESTK und Illustrator vertraut zu machen. In unseren nächsten Schritten werden wir am eigentlichen Skript arbeiten.

Schritt 3 - Die Codestruktur

Kehren Sie zu ESTK zurück und löschen Sie den Testcode, den wir in Schritt 2 erstellt haben. Fügen Sie als Nächstes die folgenden Codezeilen zu "test.jsx" hinzu:

In der obigen Codestruktur erstellen wir einfach eine Voraussetzungsprüfung für unsere logische Hauptfunktion – converToGrad(). d.h. die Hauptlogik sollte nur ausgeführt werden, wenn die folgenden Bedingungen erfüllt sind:

  1. Mindestens ein Dokument mit einem Objekt existiert, damit wir daran arbeiten können.
  2. Der Dokumentfarbraum sollte CMYK sein, da die gesamte Logik auf CMYK-Farben basiert.

Schritt 3.1 - Die DOM-Entitäten verstehen

app.documents.length gibt die Gesamtzahl der in Illustrator geöffneten Dokumente zurück.

Ein activeDocument-Objekt bezieht sich auf das aktuelle (aktive) Dokument, in dem Sie arbeiten.

pathItems bezieht sich auf eine Sammlung aller pathItem-Objekte in einem Illustrator-Dokument. Alle grafischen Elemente wie Rechteck, Ellipse, Polygon, Linie, benutzerdefinierte Formen usw. werden als pathItem bezeichnet; und eine Sammlung all dieser pathItems werden als pathItems bezeichnet. Daher gibt app.activeDocument.pathItems.length die Anzahl der im aktuellen Dokument enthaltenen grafischen Entitäten zurück.

Das documentColorSpace-Objekt definiert den Farbmodus des Dokuments. Wir führen diese Validierung durch, weil die gesamte Logik in diesem Skript auf dem CMYK-Farbraum basiert.

Die grundlegende Codestruktur ist fertig. Als nächstes werden wir in die Funktion convertToGrad() eintreten.

Schritt 4 - Beginnen mit der Hauptlogik

Die erste und wichtigste Anforderung unserer Hauptlogik besteht darin, die Gesamtzahl der ausgewählten Elemente abzurufen. Wenn keine Elemente ausgewählt sind, benachrichtigt Sie das Skript, mindestens ein Objekt auszuwählen. Fügen Sie dazu die folgenden Codezeilen in die Funktion convertToGrad() ein:

var items = selection erstellt eine neue Variable items und weist ihr die gesamte Auswahl zu. In der nächsten Zeile gibt items.length die Gesamtanzahl der ausgewählten Elemente zurück, die totalSelected zugeordnet sind.

Schritt 5 - Abrufen der Benutzerdaten

Um eine flache Farbe in einen Farbverlauf umzuwandeln, werden wir den Benutzer auffordern, einige Werte für die Farbverlaufsverschiebung und den Farbverlaufswinkel einzugeben. Aber vorher schauen wir uns an, was sie sind.

Farbverlaufsverschiebung: Dies ist ein numerischer Wert, der bestimmt, wie viel Farbe der Originalfarbe hinzugefügt oder von ihr entfernt wird. Dies ist der Kernteil unserer Logik bei der Umwandlung einer flachen Farbe in einen Farbverlauf.

Wie funktioniert eine Farbverlaufsverschiebung? Um zu verstehen, wie es funktioniert, betrachten Sie ein einfaches Beispiel eines mit CMYK-Werten gefüllten Objekts: C=50, M=20, Y=100 bzw. K=30.

Als Nächstes bitten wir den Benutzer, einen Wert für die Farbverlaufsverschiebung einzugeben. Lassen Sie uns diesen Wert mit gShift bezeichnen, und der Benutzer hat 10 für gShift eingegeben.

Sobald wir den gShift-Wert haben, erstellen wir zwei Farbverlaufsstopps für unser Objekt. Der erste Halt, d. h. der leichtere; werden alle CMYK-Werte durch gShift dekrementiert. Während der letzte Stopp, d. h. der dunklere, alle CMYK-Werte um gShift erhöht werden.

Auf diese Weise wird aus der tatsächlichen Füllfarbe ein dunkler zu heller Verlauf erzeugt. Wir werden auch einige Validierungen durchführen, um die CMYK-Werte auf 0 und 100 zu beschränken, da das Hinzufügen oder Subtrahieren eines gShift-Werts die CMYK-Werte über 0 oder 100 hinaus verschieben kann.

Gradientenwinkel: Obwohl nicht Teil der Kernlogik, werden wir diese Funktion verwenden, um eine gewisse Zugänglichkeit und Freiheit bei der Auswahl eines benutzerdefinierten Winkels für den resultierenden Gradienten zu bieten. Die Verwendung des Gradientenwinkels wird in der späteren Phase dieses Tutorials erläutert.

Kehren wir zum Code zurück und rufen die Benutzerdaten ab.

Schritt 6

Um die Nutzdaten abzurufen, geben Sie folgende Codezeilen in den if(totalSelected >0)-Block ein:

In den obigen Codezeilen fordern wir einen Benutzer auf, einen Wert für die Gradientenverschiebung und den Gradientenwinkel einzugeben. Die Funktion Math.round() rundet den eingegebenen Wert in eine ganze Zahl. (Hinweis: Sie können Math.round() überspringen, wenn Sie Dezimalwerte akzeptieren möchten.) Die Standardwerte für gShift und gradAngle sind auf "10" bzw. "0.0" gesetzt.

Beachten Sie, dass wir auch die eingegebenen Werte für null und null validieren. Null wird gefunden, wenn ein Benutzer auf die Schaltfläche Abbrechen klickt. Außerdem beschränken wir den gShift-Wert auf 0 und 100.

Sobald wir die Werte gShift und gradAngle haben, können wir mit dem Rest des Codes fortfahren.

Schritt 7 - Arbeiten an den ausgewählten Objekten

Geben Sie direkt nach der gradAngle-Deklaration die folgenden Codezeilen ein:

app.activeDocument.selection[j] gibt das ausgewählte Objekt nacheinander für jede Iteration von j zurück.

Für jedes ausgewählte Objekt führen wir einige Validierungen und Prüfungen durch. Diese Kontrollen sind in dieser Phase von entscheidender Bedeutung. Die erste Prüfung besteht darin, festzustellen, ob das Objekt ein zusammengesetztes Element oder ein Gruppenelement ist. Da dieses Skript nicht direkt bei Gruppen oder zusammengesetzten Objekten funktioniert, ist diese Prüfung obligatorisch.

Im nächsten Level prüfen wir, ob das ausgewählte Objekt bereits ein Farbverlauf, ein Muster oder eine Sonderfarbe ist. Wenn ja, werden diese Objekte übersprungen.

Es gibt eine weitere Prüfung für die GrayColor-Spezifikation. GrayColor unterscheidet sich geringfügig von der CMYK-Farbspezifikation.

Für die Behandlung von Objekten mit der GrayColor-Spezifikation ist eine detaillierte Technik erforderlich, die ich in dieser Phase des Tutorials nicht einschließe. Diese Technik ist jedoch für Ihr Interesse in den Quelldateien enthalten.

Schritt 8 - Wählen Sie die Farbe aus und teilen Sie sie auf

Gemäß unserer Logik und unserem Algorithmus wählen wir die Farbe für jedes ausgewählte Objekt aus und teilen seine CMYK-Werte in vier verschiedene Variablen auf, wie unten gezeigt:

Hinweis: Alle diese Codezeilen müssen in den Block "Farbkonvertierung ausführen" kommen, wie in Schritt 7 gezeigt.

pathItem.fillColor gibt die Füllfarbe eines bestimmten Pfadelements zurück. In unserem Fall ist das pathItem currentObject. Wir verwenden die Eigenschaften color.cyan, color.magenta, color.yellow und color.black, um die C-, M-, Y- und K-Werte jeweils in vier verschiedene Variablen abzurufen. Sobald wir diese Werte festgelegt haben, können wir sie einfach mit gShift versetzen.

Schritt 9 - Farben für Verlaufsrampen deklarieren

Unser resultierender Gradient hat zwei Gradientenstopps. Bezeichnen wir sie mit startColor und endColor. Die Variablendeklaration für diese beiden Rampenstoppfarben sieht wie folgt aus:

Die CMYKColor ist eine CMYK-Farbspezifikation, die für Farbobjekte verwendet wird. Hier werden startColor und endColor als neue CMYK-Farben deklariert.

Schritt 10 - Versetzen von startColor und endColor

In dieser Phase verfügen wir über alle notwendigen Ressourcen, um einen neuen Gradienten zu erstellen. Wir haben currentColor (mit separaten CMYK-Werten), startColor, endColor und gShift. Wir können jetzt die endgültigen Farbwerte für startColor und endColor mit der Offset-Technik festlegen.

Schritt 10.1 - Einstellen der startColor

Die startColor ist der hellere Teil des Farbverlaufs. Daher subtrahieren wir gShift von den C-, M-, Y- und K-Werten von currentColor, was zu startColor führt.

Dies ist einfach, aber wir müssen einige Überprüfungen durchführen. Was passiert beispielsweise, wenn der currentCyan bereits kleiner als gShift ist? Sagen wir, currentCyan ist 10 und gShift ist 20. Der resultierende Cyan-Wert für startColor wird 10-20 =(-) 10. Um dieses Problem zu beheben, ändern wir den obigen Codesatz in die folgenden Codezeilen:

Schritt 10.2 - Einstellen der endColor

Die endColor ist der dunklere Teil des Farbverlaufs. Daher werden wir gShift zu den C-, M-, Y- und K-Werten bzw. currentColor hinzufügen. Nach dem einfachen Hinzufügen sollte der Code wie folgt aussehen:

Es sieht wieder alles in Ordnung aus. Es gibt jedoch eine Komplikation: Was passiert, wenn die Addition von gShift einen Wert größer 100 ergibt? Zum Beispiel ist currentCyan 95 und gShift ist 20. Das Addieren dieser beiden ergibt endColor.cyan = 115; was nicht akzeptabel ist. Wir werden dies also mit einigen Validierungen kompensieren.

Erstellen wir eine neue Variable gShiftEnd, die 100-gShift entspricht. Als nächstes prüfen wir, ob der aktuelle C-, M-, Y- oder K-Wert größer als gShiftEnd ist. Wenn dies der Fall ist, setzen wir den C-, M-, Y- oder K-Wert von endColor auf 100; andernfalls setzen wir den C-, M-, Y- oder K-Wert von endColor, indem wir gShift zu den aktuellen C-, M-, Y- oder K-Werten hinzufügen. Dies kann anhand des oben gezeigten Beispiels erläutert werden.

Wir haben currentCyan = 95 und gShift = 20. Daher ist gShiftEnd = 100 – 20, d.h. 80. Als nächstes ist currentCyan größer als gShiftEnd; also setzen wir endColor.cyan auf 100.

Nach diesem Prinzip wird unser Code wie folgt modifiziert:

Bis zu diesem Punkt sieht der vollständige Code also so aus:

Schritt 11 - Erstellen des neuen Farbverlaufs

Nachdem wir nun startColor und endColor gesetzt haben; wir können mit der Erstellung des neuen Farbverlaufs fortfahren.

Schritt 11.1 - Deklarieren Sie den Farbverlauf

Um einen neuen Farbverlauf hinzuzufügen, fügen Sie die folgenden Codezeilen in den "//Gradient Declaration Block" ein.

Dadurch wird dem aktuell aktiven Dokument ein neuer Farbverlauf vom Typ Linear hinzugefügt.

Schritt 11.2 - Einstellen der Eigenschaften des neu erstellten Farbverlaufs

Fügen Sie die folgenden Codezeilen direkt nach der Farbverlaufsdeklaration hinzu:

gradientStop[0] ist der erste Gradientenstopp, während gradientStop[1] der letzte Gradientenstopp ist. Wenn Sie mehr Farbverlaufsstopps haben möchten, können Sie diese als gradientStop[2], gradientStop[3] usw. bezeichnen.

rampPoint wird verwendet, um die Rampenpunktposition des zugehörigen gradientStop einzustellen. Wir haben den ersten und letzten Rampenpunkt auf 0 bzw. 100 gesetzt. midpoint wird verwendet, um die Position des Mittelpunkts zwischen zwei Gradientenstopps festzulegen. Wir haben dies auf 50 gesetzt. Schließlich haben wir dem ersten bzw. letzten gradientStops die Werte von startColor und endColor zugewiesen.

Schritt 12 - Erstellen Sie ein Farbverlaufsobjekt

Wir sind fast fertig mit der Farbkonvertierung und der Verlaufsbildung. Als nächstes müssen wir diesen neu erstellten Farbverlauf auf das aktuell ausgewählte Objekt anwenden. Dazu erstellen wir ein Verlaufsfarbobjekt, das sich auf den neu erstellten Verlauf bezieht.

Hinweis: Wir können den neu erstellten Verlauf nicht direkt als Füllfarbe auf das Objekt anwenden. Um diesen Farbverlauf zu verwenden, müssen wir ein neues Farbverlaufsobjekt erstellen, wie unten gezeigt:

Schritt 13 - Wenden Sie den Farbverlauf an

Schließlich füllen wir das currentObject mit colorOfGradient, wie unten gezeigt:

Wir haben eine Rotationsmatrix auf das aktuelle Objekt angewendet. Diese Rotationsmatrix verwendet den Gradientenwinkel, um den Gradienten zu transformieren. Die Rotationssyntax lautet:

rotate (angle [,changePositions] [,changeFillPatterns] [,changeFillGradients] [,changeStrokePattern] [,rotateAbout])

Hier haben wir changeFillgradients auf "true" und den Rest auf "false" gesetzt. Dies ist eine schwierige Möglichkeit, die Verlaufsfarbe in einem bestimmten Winkel zu drehen. Danke an John Wundes, der mir diese intelligente Technik vorgeschlagen hat.

Schritt 14 - Das letzte Skript

Das endgültige Skript nach der vollständigen Codierung ist unten dargestellt:

Schritt 15 - Skript ausführen

Speichern Sie das Skript und erstellen Sie ein neues Dokument in Adobe Illustrator. Erstellen Sie als Nächstes einige Objekte mit flachen CMYK-Farben. Wählen Sie einige dieser Objekte aus und führen Sie das Skript aus, indem Sie die in Schritt 2.1 beschriebenen Methoden befolgen.

Sie werden aufgefordert, die Farbverlaufsverschiebung einzugeben. Geben Sie einen beliebigen Wert für gShift ein.

Als nächstes werden Sie nach dem Neigungswinkel gefragt. Geben Sie einen Wert für gradAngle ein.

Schließlich sehen Sie die unten gezeigte Ausgabe.

Abschluss und Umfang

Wir haben gelernt, wie man Skripte schreibt, um zu automatisieren oder einen Effekt zu erzeugen. Das in diesem Tutorial gezeigte Beispiel war eine einfache Demonstration dessen, was wir mit Skripten ausführen können. Mit diesem Beispiel haben wir gelernt, wie CMYK-Farben in Skripten dargestellt werden, wie sie funktionieren und wie sich Objekte im DOM von Adobe Illustrator verhalten. In unserem nächsten Teil werden wir ein Skript behandeln, das die verfügbare Verlaufsfarbe in eine flache CMYK-Farbe verschmilzt. Ich hoffe, Ihnen hat dieses einführende Tutorial zu Skripten gefallen.

Abonnieren Sie den Vectortuts+ RSS-Feed, um mit den neuesten Vektor-Tutorials und -Artikeln auf dem Laufenden zu bleiben.

One subscription.
Unlimited Downloads.
Get unlimited downloads