Come ripetere una sfumatura più volte in Illustrator e Photoshop?


12

Come ripetere un gradiente 'n' volte, ad esempio, ripetendo il gradiente da nero a bianco 5 volte (lungo il percorso del tratto) come ho fatto manualmente nell'immagine di esempio qui sotto.

C'è un modo per automatizzarlo per moltiplicare 'n' volte, come 50 o 100, senza copiare manualmente il dispositivo di scorrimento del gradiente?

Gradiente ripetuto più volte manualmente


Vishnu, Hai appena provato a trasformarlo in un'azione e registrarlo per fare la stessa cosa tutte le volte che vuoi. Nessuna confusione Nessuna confusione.
Sean,

Risposte:


7

Usa gli script!

Come altri hanno risposto, dovresti usare gli script. Ma alcune delle altre soluzioni qui usano solo RGB, mentre la mia usa i colori che scegli dal tuo documento. Inoltre, alcune soluzioni non producevano nemmeno il colore nel punto avvolgente, o presentavano troppe e / o sovrapposizioni di gradiente sovrapposte, quindi il mio script risolve tali problemi.

Per usarlo, selezionare 2 o più percorsi riempiti con i colori previsti per il gradiente, quindi quando richiesto inserire il numero di volte per ripetere il gradiente.

http://pastie.org/10924009

Modifica : sito pastie non funzionante, quindi ho incluso il codice seguente:

// 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;
}

Esempio 1: bianco e nero, si ripete 6 volte, documento CMYK:

Esempio 1

Esempio 2: gradiente di colore 3, 6 ripetizioni:

esempio 2

Esempio 3: RGB doc, 6 colori, 20 ripetizioni. Notare come i percorsi riempiti si sovrappongono? L'ordine di sovrapposizione (dalla parte anteriore a quella posteriore) determina l'ordine dei colori nel gradiente.

esempio 3

Modifica dei colori nel gradiente : selezionate un tracciato con il gradiente applicato, quindi scegliete il menu a comparsa del pannello Campioni → Aggiungi colori selezionati. Nuovi campioni globali verranno aggiunti al pannello Campioni e quando ne modifichi uno, verrà aggiornato ovunque appaia.

esempio 4


Molto bella. Mi piace il fatto che tu ottenga i colori dalla selezione. Non ci avevo pensato.
PieBie

Eccezionale! Ma il link paste.org non funziona. Si prega di controllare e aggiornare.
Vishnu,

1
@Vishnu: sembra che l'intero server pastie non sia attivo. Immagino che avrai solo bisogno di un po 'di pazienza fino a quando non tornerà di nuovo.
PieBie

6

Puoi farlo con gli script di Illustrator. Verifica della documentazione per CC15.3 nel PDF di riferimento JavaScript in Sfumature a pagina 68.

Crea i colori:

// 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;  

Crea il gradiente:

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

Crea un gradiente lineare:

newGradient.type = GradientType.LINEAR;  

o Crea un gradiente radiale:

newGradient.type = GradientType.RADIAL; 

Il punto in cui si desidera creare i diversi tipi di gradiente sarebbe 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;

Mi scuso, è stato notato che non ho spiegato completamente come è possibile creare un gradiente n volte, quindi ho modificato ulteriormente lo script per includere un prompt e un ciclo.

Chiama il numero di volte:

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

Crea un ciclo e aggiungi ulteriormente la quantità di gradienti:

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;
}

Codice sopra una miscela di ciò che è a pagina 65-71 dal link in alto:

Esempio con 1 volta:

inserisci qui la descrizione dell'immagine

Esempio con 5 volte:

inserisci qui la descrizione dell'immagine

È possibile modificare lastStop.rampPoint - nper regolare dove atterrano. Spero che sia di aiuto.


5

Funzionerà solo se stai usando il gradiente come tratto (come nella tua domanda). Se si desidera ripetere il gradiente all'infinito (al contrario di un numero specifico di ripetizioni), è possibile saltare i passaggi 2 e 3 e utilizzare un pennello pattern anziché un pennello artistico. In CC ora puoi usare le immagini nei pennelli, quindi potresti essere in grado di rasterizzare il gradiente invece di espanderlo, ma sto usando CS6, quindi non posso provarlo.

  1. Imposta un singolo rettangolo riempito con il gradiente che desideri ripetere.

inserisci qui la descrizione dell'immagine

  1. Usa un effetto di trasformazione ( Effetto → Distorci e trasforma → Trasforma ... ) per duplicare il rettangolo. Imposta lo spostamento orizzontale sulla larghezza del rettangolo e imposta tutte le copie di cui hai bisogno.

inserisci qui la descrizione dell'immagine

  1. Espandi l'effetto di trasformazione ( Oggetto → Espandi aspetto ).

  2. Non è possibile utilizzare i gradienti nei pennelli, quindi sarà necessario espandere il gradiente ( Oggetto → Espandi ), scegliere un numero di oggetti da espandere in "Espandi gradiente a".

    Espandere il gradiente ti lascerà con alcune maschere di ritaglio nel gradiente espanso, dovrai passare attraverso i livelli ed eliminarli (o tenere premuto il tasto destro del mouse e "Separa" quindi "Rilascia maschera di ritaglio" fino a quando non ci sono più maschere).

inserisci qui la descrizione dell'immagine

  1. Trascina i gradienti espansi nel pannello Pennelli e seleziona "Pennello artistico". Le opzioni predefinite per il tuo pennello saranno probabilmente ok, quindi premi "OK". Puoi sempre tornare indietro e regolare le opzioni del pennello in un secondo momento.

  2. Applica il tuo nuovo pennello.

inserisci qui la descrizione dell'immagine


5

Sulla base del manuale di Illustrator JS ho escogitato il codice seguente. Questo codice fa esattamente quello che vuoi:

  • Crea una sfumatura con due interruzioni di colore: bianco e nero
  • Lo ripete cinque volte
  • Lo applica come tratto all'elemento attivo (selezionato)

Una versione più generica è disponibile sotto la riga.

inserisci qui la descrizione dell'immagine

(1) Innanzitutto impostiamo il numero desiderato di colori e i tempi desiderati per ripetere il gradiente:

//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) Quindi impostiamo alcune variabili da utilizzare in seguito. La GradientIntervalcalcola la posizione percentuale ogni necessità punto da fissare a. totalNumberofStopsè abbastanza autoesplicativo. L' colorsarray verrà utilizzato in seguito.

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

(3) Quindi possiamo definire i nostri colori. Hai bisogno esattamente di tutti i colori impostati numberOfColorsall'inizio. I colori mancanti verranno automaticamente impostati sul nero.

//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) Tempo per creare il nostro gradiente e dargli un nome. Ora possiamo anche impostare il tipo.

//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) Ora per la parte buona. Per prima cosa totalNumberOfStopseseguiremo il ciclo in modo da poter creare ogni fermata e aggiungerla al gradiente. Creiamo una nuova fermata e la impostiamo oltre la precedente. Ora dobbiamo ottenere il colore giusto dalla nostra gamma di colori. Quando il modulo dell'indice del loop diviso per il numero di colori è 0, sappiamo che abbiamo avuto tutti i colori e dobbiamo ricominciare, quindi ripristiniamo il nostro indice di colore.

Esempio Dire che ho sei colori che voglio ripetere 5 volte. Abbiamo trenta fermate. Passiamo in rassegna tutti i colori usando j. Quando jdiventa 6 non ci sono più colori (sei è il settimo colore nell'array ma ci sono solo sei colori nell'array). Quindi ogni multiplo di sei ricominciamo da 0. Altrimenti passiamo al colore successivo.

Ora dobbiamo solo aggiungere il colore finale al 100%.

//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) Il passaggio finale: applicare il gradiente al tratto. Fatto. Festa!

//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) Potrebbe essere necessario impostare manualmente il tratto su "Applica gradiente lungo il tratto", perché non ho trovato il codice per farlo.

tratto gradiente


Questo codice è stato creato appositamente per il tuo caso. Una versione più generica è disponibile qui: http://pastie.org/10921740

Qualche esempio:

Un gradiente con due colori, ripetendo due volte: inserisci qui la descrizione dell'immagine

Un gradiente con cinque colori, ripetendo 10 volte: inserisci qui la descrizione dell'immagine

Un gradiente con due colori, ripetendo 50 volte: inserisci qui la descrizione dell'immagine

Un gradiente enorme con 50 colori che si ripetono 50 volte: inserisci qui la descrizione dell'immagine


Questo script è buono, tranne per il fatto che ci sono due arresti gradiente extra - uno all'inizio e uno alla fine - che impediscono che il gradiente sia completamente uniforme. Quando si crea una sfumatura, per impostazione predefinita ci sono due fermate.
MG_

Sì, Illustator aggiunge sempre una color stop al 100% durante la generazione da uno script, anche se non ne specifichi uno. Ma se non lo specifichi, il colore è impostato su nero. La mia soluzione è stata quella di aggiungere un ulteriore color stop al 100% con startcolor. Non è senza soluzione di continuità, ma è il migliore che ho potuto inventare.
PieBie

Oh no, vedo ora, il link pastie è una versione precedente, aggiornerò.
PieBie

0

Ho avuto lo stesso problema e quella risposta di MG_ era proprio quello di cui avevo bisogno!

Tuttavia, dopo un po ', ho notato che ogni tanto ho bisogno anche di sfumature non uniformi e anche di sfumature non uniformi. È stato un po 'doloroso trovare una buona soluzione, quindi sto condividendo lo script modificato qui per altri con lo stesso problema. Ho anche incluso un'interfaccia utente semplice per configurare tutto.

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);
}

Quindi in sostanza funziona allo stesso modo della risposta che ho collegato, ma ha un paio di opzioni extra: inserisci qui la descrizione dell'immagine


-3

Bene, non userei il gradiente fino in fondo. Per prima cosa crea una sfumatura come quella che hai, quindi riempi una tela con essa e definisci il motivo (modifica> definisci motivo). Quindi vai a Livello. nuovo livello di riempimento e scegliere il motivo. È possibile utilizzare il livello esistente come maschera di ritaglio. Ora, "n" è "scala", quindi il 100% è 1, il 50% è n = 2 e così via. Più piccola è la scala, più ripetibili saranno il motivo e il gradiente.

Il secondo approccio che seguirei è "passo e ripetizione". Non so dove e come si desidera utilizzare questo gradiente multiplo "ondulato" ma "S&R" è molto utile per moltiplicare le cose in Photoshop. Basta premere "ctrl (cmd) + alt + t" fai la tua cosa (ridimensionare, spostare, ruotare l'oggetto), premere Invio, quindi utilizzare "maiusc + ctrl (cmd) + alt + t" e photoshop replicherà ciò che hai fatto. Se ruoti, sposti e ridimensiona un oggetto che Ps lo farà tutte le volte che premi il collegamento ripetizione. inserisci qui la descrizione dell'immagine

Qui ho appena giocato con la seconda busta più grande e poi ho ripetuto il passaggio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.