Illustrator ve Photoshop'ta bir degrade nasıl tekrarlanır?


12

Degrade 'n' kez nasıl tekrarlanır , örneğin aşağıdaki örnek görüntüde manuel olarak yaptığım gibi siyahtan beyaza degrade 5 kez (kontur yolu boyunca) tekrarlanır .

Degrade sürgüsünü el ile kopyalamadan 50 veya 100 gibi 'n' kez çarpmayı otomatikleştirmenin bir yolu var mı ?

Degrade manuel olarak birden çok kez tekrarlandı


Vishnu, Sadece bir eyleme dönüştürmeyi ve istediğiniz şeyi yapmak için kaydetmeyi denediniz mi? Telaş yok Telaş yok.
Sean

Yanıtlar:


7

Komut dosyası kullanın!

Diğerlerinin yanıtladığı gibi, komut dosyası kullanmalısınız. Ancak buradaki diğer çözümlerin bazıları sadece RGB kullanıyor, benimki ise belgenizden seçtiğiniz renkleri kullanıyor. Ayrıca bazı çözümler, sarma noktasında eşit renk üretmedi veya çok fazla ve / veya çakışan degrade durağı vardı, betiğim bu sorunları ele alıyor.

Bunu kullanmak için, degradeye yönelik renklerle dolu 2 veya daha fazla yol seçin, ardından istendiğinde degradenin kaç kez tekrarlanacağını girin.

http://pastie.org/10924009

Düzenleme : pastie sitesi çalışmıyor, bu yüzden aşağıdaki kodu ekledim:

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

Örnek 1: siyah beyaz, 6 kez tekrarlanır, CMYK belgesi:

örnek 1

Örnek 2: 3 renk gradyanı, 6 tekrar:

örnek 2

Örnek 3: RGB dokümanı, 6 renk, 20 tekrar. Doldurulmuş yolların nasıl çakıştığına dikkat edin? Bu yığınlama sırası (önden arkaya) degradedeki renklerin sırasını belirler.

örnek 3

Degradedeki renkleri değiştirme : Degradenin uygulandığı bir yol seçin, ardından Renk Örnekleri Paneli açılır menüsünü → Seçilen renkleri ekle'yi seçin. Renk örnekleri paneline yeni global renk örnekleri eklenir ve bir renk örneğini düzenlediğinizde, görüntülendiği her yerde güncellenir.

örnek 4


Çok hoş. Renkleri seçimden almanızı seviyorum. Bunu düşünmemişti.
PieBie

Müthiş! Ancak paste.org bağlantısı çalışmıyor. Lütfen kontrol edin ve güncelleyin.
vishnu

1
@Vishnu: Tüm pastie sunucusu çalışmıyor gibi görünüyor. Sanýrým tekrar gelene kadar biraz sabra ihtiyacýn olacak.
PieBie

6

Bunu Illustrator komut dosyası ile yapabilirsiniz. Degradeler altındaki JavaScript Referans PDF'sinde CC15.3 belgelerinin sayfa 68'de kontrol edilmesi.

Renkleri oluşturun:

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

Degradeyi oluşturun:

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

Doğrusal bir gradyan oluşturun:

newGradient.type = GradientType.LINEAR;  

veya Radyal bir gradyan oluşturun:

newGradient.type = GradientType.RADIAL; 

Degradenin birden çok türünü oluşturmak istediğiniz yerde 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;

Özür dilerim, tam olarak n kez nasıl bir gradyan oluşturabileceğinizi açıklayamadım, böylece komut dosyasını bir istem ve döngü içerecek şekilde değiştirdim.

Kaç kez arayın:

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

Bir döngü oluşturun ve degradelerin miktarını ekleyin:

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

Yukarıdaki bağlantıdan sayfa 65-71'de bulunanların bir karışımını yukarıdaki kod:

1 kez örnek:

resim açıklamasını buraya girin

5 kere örnek:

resim açıklamasını buraya girin

lastStop.rampPoint - nNereye ineceklerini ayarlamak için değişiklik yapabilirsiniz . Bu yardımcı olur umarım.


5

Bu yalnızca degradeyi kontur olarak kullandığınızda çalışır (sorunuzdaki gibi). Degradeyi sonsuz bir şekilde tekrarlamak istiyorsanız (belirli sayıda tekrarın aksine) 2. ve 3. adımları atlayabilir ve resim fırçası yerine desen fırçası kullanabilirsiniz. CC'de artık fırçalardaki görüntüleri kullanabilirsiniz, böylece degradeyi genişletmek yerine rasterleştirebilirsiniz, ancak CS6 kullanıyorum, bu yüzden test edemiyorum.

  1. Tekrarlamak istediğiniz degradeyle dolu tek bir dikdörtgen ayarlayın.

resim açıklamasını buraya girin

  1. Dikdörtgeni çoğaltmak için bir dönüştürme efekti ( Efekt → Deforme Et ve Dönüştür → Dönüştür ... ) kullanın. Yatay hareketi dikdörtgenin genişliğine ayarlayın ve istediğiniz sayıda kopya ayarlayın.

resim açıklamasını buraya girin

  1. Dönüştürme efektini genişletin ( Nesne → Görünümü Genişlet ).

  2. Degradeleri fırçalarda kullanamazsınız, bu nedenle degradeyi genişletmeniz ( Nesne → Genişlet ), "Degradeyi Genişlet" altında genişletilecek bir dizi nesne seçmeniz gerekir.

    Degradeyi genişletmek, genişletilmiş degradede bazı kırpma maskeleri bırakmanıza neden olur, katmanlardan geçmeniz ve bunları silmeniz gerekir (veya sağ tıklamaya devam edin ve "Maskeyi Kaldır" sonra "Maske Maskesini Bırak" ve ardından artık maske kalmayın).

resim açıklamasını buraya girin

  1. Genişletilmiş renk geçişlerinizi Fırçalar paneline sürükleyin ve "Resim Fırçası" nı seçin. Fırçanız için varsayılan seçenekler büyük olasılıkla tamam olacaktır, bu yüzden "Tamam" düğmesine basın. Daha sonra istediğiniz zaman geri dönüp fırça seçeneklerini ayarlayabilirsiniz.

  2. Yeni fırçanızı uygulayın.

resim açıklamasını buraya girin


5

Illustrator JS kılavuzuna dayanarak aşağıdaki kodu buldum. Bu kod tam olarak istediğinizi yapar:

  • İki renk durağı olan bir degrade oluşturur: siyah beyaz
  • Beş kez tekrar eder
  • Etkin (seçili) öğeye kontur olarak uygular

Çizginin altında daha genel bir versiyon bulunabilir.

resim açıklamasını buraya girin

(1) Öncelikle, degradenin yinelemesi için gereken renk sayısını ve istenen süreleri ayarladık:

//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) Sonra bazı değişkenleri daha sonra kullanmak üzere ayarladık. GradientIntervalHer bir nokta ihtiyaçları ayarlanabilir göre yüzde konumunu hesaplar. totalNumberofStopsoldukça açıklayıcı. colorsDizi sonra kullanılacaktır.

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

(3) O zaman renklerimizi tanımlayabiliriz. numberOfColorsBaşlangıçta ayarlandığı kadar çok renge ihtiyacınız var . Eksik renkler varsayılan olarak siyaha döner.

//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) Degrademizi oluşturma ve ona bir ad verme zamanı. Şimdi türü de ayarlayabiliriz.

//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) Şimdi iyi kısım için. İlk önce totalNumberOfStopsher bir durağı oluşturabilmemiz ve degradeye ekleyebilmemiz için üzerinde döngü yapacağız . Yeni bir durak oluşturuyoruz ve sonuncusundan bir tane daha ayarlıyoruz. Şimdi renkler dizimizden doğru rengi almamız gerekiyor. Döngü indeksinin renk sayısına bölünmesiyle 0 olduğunda, her renge sahip olduğumuzu biliyoruz ve tekrar başlamamız gerekiyor, bu nedenle renk dizinimizi sıfırlıyoruz.

Örnek 5 kere döngü yapmak istediğim altı renk var. Otuz durağımız var. Biz kullanarak tüm renkleri üzerinde döngü j. Ne jolur 6 daha fazla renk (altı dizi yedinci renk ancak altı renk dizisi vardır) vardır. Böylece altıdan her biri tekrar 0'dan başlıyoruz. Aksi takdirde bir sonraki renge geçiyoruz.

Şimdi sadece son renk durağını% 100 eklememiz gerekiyor.

//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) Son adım: degradenin strokta uygulanması. Bitti. Parti!

//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) Bunu yapmak için kodu bulamadığım için konturu elle 'Kontur boyunca degrade uygula' olarak ayarlamanız gerekebilir.

gradyan konturu


Bu kod sizin durumunuz için özel olarak hazırlanmıştır. Daha genel bir versiyonu burada bulabilirsiniz: http://pastie.org/10921740

Bazı örnekler:

İki renkli yinelenen iki renk gradyanı: resim açıklamasını buraya girin

10 kez yinelenen beş renk gradyanı: resim açıklamasını buraya girin

50 kez yinelenen iki renk içeren bir degrade: resim açıklamasını buraya girin

50 kez 50 renk yinelenen bir eğim gradyanı: resim açıklamasını buraya girin


Bu komut dosyası iyidir, ancak bir tanesi başlangıçta diğeri sonunda olmak üzere iki degrade durağı vardır. Degrade oluşturduğunuzda, varsayılan olarak iki durak vardır.
MG_

Evet Illustator, bir komut dosyası oluşturmazken, bir kod belirtmeseniz bile, her zaman% 100 oranında bir renk durağı ekler. Ancak belirtmezseniz, renk siyaha ayarlanır. Geçici çözümüm, startcolor ile% 100 oranında ekstra renk durağı eklemekti. Sorunsuz değil, ama gelebileceğim en iyisi.
PieBie

Oh hayır, şimdi görüyorum, pastie bağlantısı eski bir versiyon, güncelleme yapacağım.
PieBie

0

Aynı sorunu yaşadım ve MG_'nin bu cevabı tam da ihtiyacım olan şeydi!

Ancak, bir süre sonra, arada bir pürüzsüz olmayan degradelere ve ayrıca kesintisiz olmayan degradelere ihtiyacım olduğunu fark ettim. İyi bir çözüm bulmak biraz acı vericiydi, bu yüzden değiştirilmiş senaryoyu aynı sorunu olan diğerleri için burada paylaşıyorum. Ayrıca her şeyi ayarlamak için basit kullanıcı arayüzü ekledim.

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

Temel olarak, bağladığım cevapla aynı şekilde çalışır, ancak birkaç ekstra seçeneğe sahiptir: resim açıklamasını buraya girin


-3

Degradeyi sonuna kadar kullanmam. Önce sahip olduğunuz gibi bir degrade oluşturun, daha sonra onunla bir tuval doldurun ve deseni tanımlayın (düzenle> deseni tanımlayın). Sonra Layer'a gidersiniz. yeni dolgu katmanı ve desen seçin. Mevcut katmanı kırpma maskesi olarak kullanabilirsiniz. Şimdi, "n" "skala" dır, bu yüzden% 100 1,% 50 n = 2 vb. Ölçek küçüldükçe, desen ve degrade daha fazla tekrarlanabilir hale gelir.

İkinci yaklaşım "adım at ve tekrarla" dır. Nerede ve nasıl bu çoklu "dalgalı" gradyanı kullanmak istediğiniz bilmiyorum ama "S&R" photoshop şeyler çoğaltmak için çok kullanışlıdır. Yapmanız gereken sadece "ctrl (cmd) + alt + t" tuşlarına basın (ölçekleme, taşıma, nesneyi döndürme), Enter tuşuna basın ve sonra "shift + ctrl (cmd) + alt + t" tuşlarını kullanın ve photoshop yaptığınız şeyi çoğaltacaktır. Bir nesneyi döndürürseniz, taşıyın ve ölçeklendirin Ps bunu tekrar kısayoluna bastığınız kadar çok zaman yapar. resim açıklamasını buraya girin

Burada ikinci büyük zarfla oynadım ve sonra adımı tekrarladım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.