Wie kann ich einen Farbverlauf in Illustrator und Photoshop mehrmals wiederholen?

12

So wiederholen Sie einen Farbverlauf n- mal: Wiederholen Sie den Schwarz-Weiß-Farbverlauf 5 Mal (entlang des Strichpfads), wie ich es im folgenden Beispielbild manuell gemacht habe.

Gibt es eine Möglichkeit, es zu automatisieren, um 'n' Zeiten wie 50 oder 100 zu multiplizieren , ohne den Verlaufsregler manuell zu kopieren?

Farbverlauf mehrmals manuell wiederholen

vishnu
quelle
Vishnu, hast du gerade versucht, es in eine Aktion zu verwandeln und aufzunehmen, um das Gleiche zu tun, so oft du willst. Keine Aufregung Nein muss.
Sean

Antworten:

7

Verwende Scripting!

Wie andere geantwortet haben, sollten Sie Skripte verwenden. Bei einigen anderen Lösungen wird jedoch nur RGB verwendet, während bei meinen Farben verwendet werden, die Sie aus Ihrem Dokument auswählen. Außerdem haben einige Lösungen am Umlaufpunkt keine gleichmäßige Farbe erzeugt oder hatten zu viele und / oder überlappende Farbverlaufsstopps, sodass mein Skript diese Probleme behebt.

Wählen Sie dazu mindestens zwei Pfade aus, die mit für den Verlauf bestimmten Farben gefüllt sind, und geben Sie dann bei Aufforderung ein, wie oft der Verlauf wiederholt werden soll.

http://pastie.org/10924009

Bearbeiten : Pastie-Site funktioniert nicht, daher habe ich den folgenden Code eingefügt:

// select two paths, then run this script
if (app.activeDocument.selection.length < 2) {

    alert("Please select two or more paths with fills.");

} else {

    var cycles = Number(prompt ("Repeat the gradient how many times?")) || 5;  
    var myselection = app.activeDocument.selection;
    var colors = [];

    for (var i = 0; i < myselection.length; i++) {
        var newColor = myselection[i].fillColor;
        colors.push(newColor);
    }

    var stops = colors.length * cycles - 1; // “stops” does not include default 2 stops
    var interval = 100 / (cycles * colors.length); // ... the distance between stops

    var newGradient = app.activeDocument.gradients.add();  

    newGradient.type = GradientType.LINEAR;     // asymmetric, for 3 or more colours
    //newGradient.type = GradientType.RADIAL;   // symetric, for 3 or more colours

    //  the default 2 gradient stops (at beginning and end)
    //  should be the same colour, so that the gradient smoothly wraps around:
    newGradient.gradientStops[0].color = colors[0]; 
    newGradient.gradientStops[1].color = colors[0]; 

    // now add stops between beginning and end stops:
    for ( i = 1; i <= stops; i++ ) {

        var thisStop = newGradient.gradientStops.add();
        thisStop.rampPoint = i * interval;
        thisStop.color = colors[i % colors.length];

    }

    // to get a even result, the first and last rampPoints cannot be 0 and 100:
    newGradient.gradientStops[0].rampPoint = 0.1;
    newGradient.gradientStops[stops + 1].rampPoint = 99.9;
}

Beispiel 1: Schwarzweiß, 6-mal wiederholt, CMYK-Dokument:

Beispiel 1

Beispiel 2: 3 Farbverläufe, 6 Wiederholungen:

Beispiel 2

Beispiel 3: RGB-Dokument, 6 Farben, 20 Wiederholungen. Beachten Sie, wie sich die gefüllten Pfade überlappen. Diese Stapelreihenfolge (von vorne nach hinten) bestimmt die Reihenfolge der Farben im Verlauf.

Beispiel 3

Ändern der Farben im Verlauf : Wählen Sie einen Pfad mit dem angewendeten Verlauf aus und wählen Sie dann das Flyout-Menü des Farbfeldbedienfelds → Ausgewählte Farben hinzufügen. Neue globale Farbfelder werden dem Farbfeldbedienfeld hinzugefügt. Wenn Sie eines bearbeiten, wird es überall dort aktualisiert, wo es angezeigt wird.

Beispiel 4

MG_
quelle
Sehr schön. Mir gefällt die Tatsache, dass Sie die Farben aus der Auswahl erhalten. Hatte nicht daran gedacht.
PieBie
Genial! Aber der paste.org Link funktioniert nicht. Bitte überprüfen und aktualisieren.
Vishnu
1
@ Vishnu: Scheint, als wäre der gesamte Pastie-Server ausgefallen. Ich nehme an, Sie brauchen nur etwas Geduld, bis es wieder auftaucht.
PieBie
6

Dies können Sie mit Illustrator-Skripten erreichen. Überprüfen der Dokumentation für CC15.3 im JavaScript-Referenz-PDF unter Farbverläufe auf Seite 71 .

Erstellen Sie die Farben:

// Create the colors
var startColor = new RGBColor();  
startColor.red = 0;  
startColor.green = 100;  
startColor.blue = 255;  

var middleColor = new RGBColor();
middleColor.red = 252;  
middleColor.green = 238;  
middleColor.blue = 33;

var endColor = new RGBColor();  
endColor.red = 220;  
endColor.green = 0;  
endColor.blue = 100;  

Erstellen Sie den Farbverlauf:

var newGradient = app.activeDocument.gradients.add();  
newGradient.name = "new_gradient_75097";  

Erstellen Sie einen linearen Farbverlauf:

newGradient.type = GradientType.LINEAR;  

oder Erstellen Sie einen radialen Farbverlauf:

newGradient.type = GradientType.RADIAL; 

Wo Sie die verschiedenen Arten des Farbverlaufs erstellen möchten, finden Sie in GradientStops:

// Modify the first gradient stop  
newGradient.gradientStops[0].rampPoint = 0  
newGradient.gradientStops[0].midPoint = 20;  
newGradient.gradientStops[0].color = startColor;  
// Modify the middle gradient stop  
newGradient.gradientStops.add();
// Modify the last gradient stop  
newGradient.gradientStops[1].rampPoint = 70;  
newGradient.gradientStops[1].midPoint = 80;  
newGradient.gradientStops[1].color = endColor;

Ich entschuldige mich, es wurde bemerkt, dass ich nicht vollständig erklärt habe, wie Sie einen Farbverlauf n- mal erstellen können, und deshalb habe ich das Skript weiter modifiziert, um eine Eingabeaufforderung und eine Schleife einzuschließen.

Rufen Sie die Anzahl der Male an:

var countgradient = Number(prompt ("Enter Gradient Count"));  

Erstellen Sie eine Schleife und fügen Sie die Anzahl der Farbverläufe hinzu:

for ( i =0; i < countgradient; i++ ) {
    var origCount = newGradient.gradientStops.length;
    var lastStop = newGradient.gradientStops[origCount-1];

    var firstStop = newGradient.gradientStops.add();
    firstStop.rampPoint = lastStop.rampPoint;
    lastStop.rampPoint = lastStop.rampPoint - 1;
    firstStop.color = endColor;

    var secondStop = newGradient.gradientStops.add();
    secondStop.rampPoint = lastStop.rampPoint;
    lastStop.rampPoint = lastStop.rampPoint - 2;
    secondStop.color = startColor;
}

Code über einer Mischung dessen, was auf Seite 65-71 über den Link oben steht:

Beispiel mit 1 Mal:

Bildbeschreibung hier eingeben

Beispiel mit 5 mal:

Bildbeschreibung hier eingeben

Sie können ändern, lastStop.rampPoint - num anzupassen, wo sie landen. Hoffe das hilft.

DᴀʀᴛʜVᴀᴅᴇʀ
quelle
5

Dies funktioniert nur, wenn Sie den Farbverlauf (wie in Ihrer Frage) als Strich verwenden. Wenn Sie den Verlauf endlos wiederholen möchten (im Gegensatz zu einer bestimmten Anzahl von Wiederholungen), können Sie die Schritte 2 und 3 überspringen und einen Musterpinsel anstelle eines Malpinsels verwenden. In CC können Sie jetzt Bilder in Pinseln verwenden, damit Sie den Verlauf möglicherweise rastern können, anstatt ihn zu erweitern, aber ich verwende CS6, damit ich das nicht testen kann.

  1. Richten Sie ein einzelnes Rechteck ein, das mit dem Farbverlauf gefüllt ist, den Sie wiederholen möchten.

Bildbeschreibung hier eingeben

  1. Verwenden Sie einen Transformationseffekt ( Effekt → Verzerren & Transformieren → Transformieren ... ), um Ihr Rechteck zu duplizieren. Stellen Sie die horizontale Verschiebung auf die Breite Ihres Rechtecks ​​ein und legen Sie so viele Kopien fest, wie Sie benötigen.

Bildbeschreibung hier eingeben

  1. Erweitern Sie den Transformationseffekt ( Objekt → Darstellung erweitern ).

  2. Sie können in Pinseln keine Verläufe verwenden. Sie müssen daher den Verlauf erweitern ( Objekt → Erweitern ) und unter "Verlauf erweitern auf" eine Reihe von Objekten auswählen, auf die Sie Ihren Verlauf erweitern möchten.

    Wenn Sie den Verlauf erweitern, werden einige Schnittmasken im erweiterten Verlauf angezeigt. Sie müssen die Ebenen durchgehen und diese löschen (oder mit der rechten Maustaste klicken und "Gruppierung aufheben" und dann "Schnittmaske freigeben", bis keine Masken mehr vorhanden sind).

Bildbeschreibung hier eingeben

  1. Ziehen Sie die erweiterten Farbverläufe in das Pinselbedienfeld und wählen Sie "Pinsel" aus. Die Standardoptionen für Ihren Pinsel sind höchstwahrscheinlich in Ordnung, klicken Sie also einfach auf "OK". Sie können jederzeit zurückgehen und die Pinseloptionen später anpassen.

  2. Tragen Sie Ihren neuen Pinsel auf.

Bildbeschreibung hier eingeben

Cai
quelle
5

Basierend auf dem Illustrator JS-Handbuch habe ich den folgenden Code gefunden. Dieser Code macht genau das, was Sie wollen:

  • Erstellt einen Farbverlauf mit zwei Farbstopps: Schwarz und Weiß
  • Wiederholt es fünfmal
  • Wendet es als Strich auf das aktive (ausgewählte) Element an

Eine allgemeinere Version finden Sie unter der Zeile.

Bildbeschreibung hier eingeben

(1) Zuerst stellen wir die gewünschte Anzahl von Farben und die gewünschten Zeiten ein, zu denen der Verlauf iterieren muss:

//Change these
var numberOfColors = 2; //Change this to the desired number of colors in the gradient
var iteration = 5; //Change this to the desired times you want to repeat the gradient

(2) Dann setzen wir einige Variablen, die später verwendet werden sollen. Der GradientIntervalberechnet die prozentuale Position, an der jeder Punkt gesetzt werden muss. totalNumberofStopsist ziemlich selbsterklärend. Das colorsArray wird später verwendet.

//Don't change these
var i,j;
var gradientInterval = 100 / numberOfColors / iteration;
var totalNumberOfStops = numberOfColors * iteration;
var colors = [];

(3) Dann können wir unsere Farben definieren. Sie benötigen genau so viele Farben, wie Sie numberOfColorsam Anfang eingestellt haben. Fehlende Farben werden standardmäßig schwarz.

//Don't forget to push the colors to the colors array!

var color1 = new RGBColor();
color1.red = 0;
color1.green = 0;
color1.blue = 0;
colors.push(color1);

var color2 = new RGBColor();
color2.red = 255;
color2.green = 255;
color2.blue = 255;
colors.push(color2);

(4) Zeit, unseren Farbverlauf zu erstellen und ihm einen Namen zu geben. Wir können jetzt auch den Typ einstellen.

//Let's initiate the gradient & name it
var newGradient = app.activeDocument.gradients.add();
newGradient.name = "new_gradient";

//Choose the gradient type here
//newGradient.type = GradientType.RADIAL; //Uncomment the one you need
newGradient.type = GradientType.LINEAR; //Uncomment the one you need

(5) Nun zum guten Teil. Zuerst machen wir eine Schleife über die, totalNumberOfStopsdamit wir jeden Stopp erstellen und zum Farbverlauf hinzufügen können. Wir erstellen einen neuen Stopp und setzen ihn weiter als den letzten. Jetzt müssen wir die richtige Farbe aus unserer Farbpalette herausholen. Wenn der Modul des Schleifenindex geteilt durch die Anzahl der Farben 0 ist, wissen wir, dass wir jede Farbe hatten und müssen neu beginnen, also setzen wir unseren Farbindex zurück.

Beispiel Angenommen, ich habe sechs Farben, die ich fünfmal in einer Schleife wiedergeben möchte. Wir haben dreißig Haltestellen. Wir durchlaufen alle Farben mit j. Wenn j6 wird, gibt es keine Farben mehr (sechs ist die siebte Farbe im Array, aber es gibt nur sechs Farben im Array). Also fangen wir jedes Vielfache von sechs wieder bei 0 an. Sonst fahren wir einfach mit der nächsten Farbe fort.

Jetzt müssen wir nur noch den endgültigen Farbstopp bei 100% hinzufügen.

//Now here is where the magic starts
for(i=0;i<totalNumberOfStops;i++){
    var newStop = newGradient.gradientStops.add();
    newStop.rampPoint = i * gradientInterval;
    var modulus = i % numberOfColors;
    if(modulus === 0){
        j = 0;
    }else{
        j+=1;
    }
    newStop.color = colors[j];
}
var lastStop = newGradient.gradientStops.add();
lastStop.rampPoint = 100;
lastStop.color = colors[colors.length-1];

(6) Der letzte Schritt: Anwenden des Gradienten auf den Strich. Erledigt. Party!

//Apply gradient stroke to selected object
var colorOfGradient = new GradientColor();
colorOfGradient.gradient = newGradient;
var topPath = app.activeDocument.pathItems[0];
topPath.stroked = true;
topPath.strokeWidth = 140;
topPath.strokeColor =colorOfGradient;

(7) Möglicherweise müssen Sie den Strich manuell auf "Verlauf entlang des Strichs anwenden" einstellen, da ich den Code dafür nicht gefunden habe.

Farbverlauf


Dieser Code wurde speziell für Ihren Fall erstellt. Eine allgemeinere Version finden Sie hier: http://pastie.org/10921740

Einige Beispiele:

Ein Verlauf mit zwei Farben, der sich zweimal wiederholt: Bildbeschreibung hier eingeben

Ein Farbverlauf mit fünf Farben, der zehnmal wiederholt wird: Bildbeschreibung hier eingeben

Ein Verlauf mit zwei Farben, der 50 Mal wiederholt wird: Bildbeschreibung hier eingeben

Ein beeindruckender Farbverlauf mit 50 Farben, der sich 50 Mal wiederholt: Bildbeschreibung hier eingeben

PieBie
quelle
Dieses Skript ist gut, außer dass es zwei zusätzliche Farbverlaufsstopps gibt - einen am Anfang und einen am Ende -, die verhindern, dass der Farbverlauf vollständig nahtlos ist. Wenn Sie einen Farbverlauf erstellen, gibt es standardmäßig zwei Stopps.
MG_
Ja Illustator fügt beim Generieren aus einem Skript immer einen Farbstopp bei 100% hinzu, auch wenn Sie keinen angeben. Wenn Sie dies jedoch nicht angeben, wird die Farbe auf Schwarz gesetzt. Meine Problemumgehung bestand darin, der Startfarbe einen zusätzlichen Farbstopp von 100% hinzuzufügen. Es ist nicht nahtlos, aber es ist das Beste, was ich mir vorstellen kann.
PieBie
Oh nein, ich sehe jetzt, der Pastie-Link ist eine ältere Version, ich werde aktualisieren.
PieBie
0

Ich hatte das gleiche Problem und diese Antwort von MG_ war genau das, was ich brauchte!

Nach einer Weile bemerkte ich jedoch, dass ich von Zeit zu Zeit auch nicht glatte Farbverläufe und auch nicht nahtlose Farbverläufe benötige. Es war ein bisschen schmerzhaft, eine gute Lösung zu finden, deshalb teile ich das geänderte Skript hier für andere mit demselben Problem. Ich habe auch eine einfache Benutzeroberfläche hinzugefügt, um alles einzurichten.

var run = true;
if (app.activeDocument.selection.length < 2) {
    alert("Please select two or more paths with fills.");
} else {
    var dlg = new Window("dialog{text:'Create repeated gradient'}");

    dlg.location = [500,50];
    (dlg.alertBtnsPnl1 = dlg.add('panel', undefined, 'Color transition:')).helpTip = "Smooth or rough transition"; 
    (dlg.alertBtnsPnl1.selectS = dlg.alertBtnsPnl1.add('radiobutton', [15,15,95,35], 'Smooth' )).helpTip = "Smooth color transition"; 
    (dlg.alertBtnsPnl1.selectR = dlg.alertBtnsPnl1.add('radiobutton', [15,15,75,35], 'Rough' )).helpTip = "Sharp color transition"; 
    dlg.alertBtnsPnl1.orientation='row';
    dlg.alertBtnsPnl1.selectS.value = true;

    (dlg.alertBtnsPnl3 = dlg.add('panel', undefined, 'Gradient type:')).helpTip = "Linear or radial gradient"; 
    (dlg.alertBtnsPnl3.selectL = dlg.alertBtnsPnl3.add('radiobutton', [15,15,95,35], 'Linear' )).helpTip = "Linear gradient"; 
    (dlg.alertBtnsPnl3.selectR = dlg.alertBtnsPnl3.add('radiobutton', [15,15,75,35], 'Radial' )).helpTip = "Radial gradient"; 
    dlg.alertBtnsPnl3.orientation='row';
    dlg.alertBtnsPnl3.selectL.value = true;

    (dlg.alertBtnsPnl2 = dlg.add('panel', undefined, 'Gradient repeats:')).helpTip = "Gradient repeat count"; 
    (dlg.alertBtnsPnl2.slide = dlg.alertBtnsPnl2.add('slider', [25,15,165,39], 'Set repeat count for gradient:')).helpTip = "Use Slider to set a repeat count"; 
    dlg.alertBtnsPnl2.slide.value = 2; 
    (dlg.alertBtnsPnl2.titleEt = dlg.alertBtnsPnl2.add('edittext', [100,15,160,35], dlg.alertBtnsPnl2.slide.value)).helpTip = "Enter a repeat count value"; 
    dlg.alertBtnsPnl2.titleEt.text = Math.ceil(dlg.alertBtnsPnl2.slide.value); 
    dlg.alertBtnsPnl2.orientation='row';

    (dlg.alertBtnsPnl4 = dlg.add('panel', undefined, 'First and last colors:')).helpTip = "Define type of gradient loop";
    (dlg.sameStartAndEnd = dlg.alertBtnsPnl4.add('checkbox', [25,25,235,39], 'Start and end with same color')).helpTip="Use this for seamless gradient"; 
    dlg.sameStartAndEnd.value = true; 
    dlg.alertBtnsPnl4.orientation='column';

    dlg.btnPnl = dlg.add('group', undefined, 'Do It!'); 
    dlg.btnPnl.orientation='row';
    dlg.btnPnl.buildBtn1= dlg.btnPnl.add('button',[15,15,115,35], 'Cancel', {name:'cancel'}); 
    dlg.btnPnl.buildBtn2 = dlg.btnPnl.add('button', [125,15,225,35], 'OK', {name:'ok'}); 
    dlg.alertBtnsPnl2.slide.onChange= sliderChanged;
    dlg.alertBtnsPnl2.titleEt.onChanging = eTextChanged;
    dlg.btnPnl.buildBtn1.onClick= actionCanceled;
    dlg.show();

    if(run){
        var smooth = (dlg.alertBtnsPnl1.selectS.value) ? true : false;
        var cycles = dlg.alertBtnsPnl2.slide.value;
        var myselection = app.activeDocument.selection;
        var colors = [];

        for (var i = 0; i < myselection.length; i++) {
            var newColor = myselection[i].fillColor;
            colors.push(newColor);
        }

        var stops;
        var interval;
        if(dlg.sameStartAndEnd.value && !smooth){
            stops = colors.length * cycles - 2;
            interval = 100 / ((cycles * colors.length)+1);
        }else{
            if(smooth && !dlg.sameStartAndEnd.value){
                stops = colors.length * cycles - 2;
                interval = 100 / ((cycles * colors.length)-1);
            }else{
                stops = colors.length * cycles - 1;
                interval = 100 / (cycles * colors.length);
            }
        }

        var allStops = stops;
        var newGradient = app.activeDocument.gradients.add();  

        newGradient.type = (dlg.alertBtnsPnl3.selectL.value) ? GradientType.LINEAR : GradientType.RADIAL;

        newGradient.gradientStops[0].color = colors[0]; 
        if(dlg.sameStartAndEnd.value) newGradient.gradientStops[1].color = colors[0]; 
        else newGradient.gradientStops[1].color = colors[colors.length - 1]; 

        if(!smooth){
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = interval-0.1;
            thisStop.color = colors[0];
            allStops++;
        }

        for(i = 1; i <= stops; i++){
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = i * interval;
            thisStop.color = colors[i % colors.length];

            if(!smooth && i<(stops+1)){
                var thisStop = newGradient.gradientStops.add();
                thisStop.rampPoint = (i+1) * interval - 0.001;
                thisStop.color = colors[i % colors.length];
                allStops++;
            }
        }

        if(!smooth && dlg.sameStartAndEnd.value){
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = 100 - (interval*2);
            thisStop.color = colors[colors.length-1];
            allStops++;
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = 99.9 - interval;
            thisStop.color = colors[colors.length-1];
            allStops++;
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = 100 - interval;
            thisStop.color = colors[0];
            allStops++;
        }

        newGradient.gradientStops[0].rampPoint = 0.1;
        if(dlg.sameStartAndEnd.value)newGradient.gradientStops[allStops + 1].rampPoint = 99.9;
    }
}

function actionCanceled() { 
    run = false;
    dlg.hide();
}

function sliderChanged() { 
    dlg.alertBtnsPnl2.slide.value = Math.ceil(dlg.alertBtnsPnl2.slide.value);
    dlg.alertBtnsPnl2.titleEt.text = Math.ceil(dlg.alertBtnsPnl2.slide.value);
}

function eTextChanged() { 
    dlg.alertBtnsPnl2.titleEt.text = Math.ceil(dlg.alertBtnsPnl2.titleEt.text);
    dlg.alertBtnsPnl2.slide.value = Math.ceil(dlg.alertBtnsPnl2.titleEt.text);
}

Im Grunde funktioniert es genauso wie die Antwort, die ich verlinkt habe, aber es gibt ein paar zusätzliche Optionen: Bildbeschreibung hier eingeben

Kaarto
quelle
-3

Nun, ich würde nicht den ganzen Weg mit Farbverlauf arbeiten. Erstellen Sie zunächst einen Verlauf wie den, den Sie haben, füllen Sie dann eine Leinwand damit und definieren Sie das Muster (Bearbeiten> Muster definieren). Dann gehst du zur Ebene. Neue Ebene füllen und Muster auswählen. Sie können die vorhandene Ebene als Schnittmaske verwenden. Jetzt ist "n" "scale", also ist 100% 1, 50% ist n = 2 und so weiter. Je kleiner der Maßstab, desto wiederholbarer werden Muster und Verlauf.

Der zweite Ansatz, den ich wählen würde, ist "step and repeat". Ich weiß nicht, wo und wie Sie diesen vielfachen "welligen" Farbverlauf verwenden möchten, aber das "S & R" ist sehr praktisch, um Dinge in Photoshop zu multiplizieren. Drücken Sie einfach "Strg (cmd) + Alt + T", machen Sie Ihr Ding (skalieren, bewegen, drehen Sie das Objekt), drücken Sie die Eingabetaste und verwenden Sie dann "Shift + Strg (cmd) + Alt + T", und Photoshop wird das replizieren, was Sie getan haben. Wenn Sie ein Objekt drehen, verschieben und skalieren, wird Ps dies so oft tun, wie Sie die Wiederholungsverknüpfung drücken. Bildbeschreibung hier eingeben

Hier habe ich gerade mit zweitgrößter Hüllkurve gespielt und dann den Schritt wiederholt.

SZCZERZO KŁY
quelle