2011-09-08 15 views
9

Photoshop CS3 için bir komut dosyası yazmadan önce biraz araştırma yapıyorum. Komut dosyasını Photoshop'ta JavaScript ile yazmak istiyorum.Photoshop'ta katman stili bilgilerine nasıl erişirsiniz?

ben Photoshop JavaScript Rehber yoluyla baktım ama bir katman (inme, gradyan, dış ışıma, vs) için katman stili bilgi almak için herhangi bir yol bulmak mümkün değil.

katman stillerini ayarlamak için bir yol yoktur, ama bilgi almak sağlayan şey bulmak mümkün olmamıştır.

Sadece Photoshop CS3 var, bu yüzden o uygun olacak bir çözüm arıyorum.

+1

Yup, Adobe'nin belgeleri berbat. –

+0

Haha, evet, farklı katman stilleri (degrade renkler, kontur genişliği, vb.) Için seçeneklerin nasıl ayarlanacağı konusunda bir ipucu bile yok. –

+0

Tek istediğim PS için sola-kopyala/yapıştırdı (ctr-ins/vardiya-ins) ve ona senaryo yazmam gerektiği söylendi. Uzun sinir bozucu yolculuklara başladı ve pes etti. –

cevap

1

Açık Adobe ExtendScript Toolkit. Menüde Yardım> Nesne-Model Görüntüleyici'ye gidin (ya da benzer, benimki Almancadır). "Tarayıcı" yan sekme seçme Photoshop Nesne Modeli tarayıcısı içinde

. Artık sağ üst köşedeki arama alanını arayabilirsiniz.

görüntüsünün altında ArtLayer 'ın deifinition ve ArtLayer.applyStyle() için:

http://i.stack.imgur.com/UEmj6.png

enter image description here

Arama etrafında, bu kerpiç belgelerine göre çok daha iyidir.

+0

Harika bahşiş! Bu saçma PDF'den daha kolay gezinmek için. Bununla birlikte, hala katman stili bilgilerine erişmenin bir yolunu bulamıyordum. Cevabınız için teşekkürler! –

+0

ExtendScript Nesne Tarayıcısı berbat. SolidColor, belgelenen sınıflardan biri olarak dahil değildir. – thenonhacker

1

ben de aynı sorunu vardı ve ben http://www.rags-int-inc.com/PhotoTechStuff/CollageTemplate/index.html bir çözüm buldum çünkü yazınızı reat, ben çok geç değilim umuyoruz. Bu adamın "Katman Efekt Seçenekleri" adlı bir senaryosu var. Kaynağı aşağıdan indirebilirsiniz.

Bu sadece Efektleri uygulamak için bir paneldir, ancak kodda gezindiğinizde ihtiyacınız olan şeyi ayıklayabilirsiniz. İşte

bir vuruş efekti bir bütün çizgilerin tam anlamını (esas olarak & kopyalayıp yapıştırarak olduğunu) bilmiyordum

function newStrokeEffect(strokeSize, strokeColor, strokePosition) { 
    var effectDescriptor = new ActionDescriptor(); 
    var effectColor = new ActionDescriptor(); 
    var strokeOpacity = 100.0;  // 0 - 100 % 
    var strokeBlend = "Nrml";  // Normal[Nrml], ColorBurn[CBrn], SoftLight[SftL}, Color[Clr ] 

    effectDescriptor.putBoolean(charIDToTypeID("enab"), true); 
    effectDescriptor.putEnumerated(charIDToTypeID("Styl"), charIDToTypeID("FStl"), charIDToTypeID(strokePosition)); 
    effectDescriptor.putEnumerated(charIDToTypeID("PntT"), charIDToTypeID("FrFl"), charIDToTypeID("SClr")); 
    effectDescriptor.putEnumerated(charIDToTypeID("Md "), charIDToTypeID("BlnM"), charIDToTypeID(strokeBlend)); 
    effectDescriptor.putUnitDouble(charIDToTypeID("Opct"), charIDToTypeID("#Prc"), strokeOpacity); 
    effectDescriptor.putUnitDouble(charIDToTypeID("Sz "), charIDToTypeID("#Pxl"), strokeSize); 
    effectColor.putDouble(charIDToTypeID("Rd "), strokeColor.rgb.red); 
    effectColor.putDouble(charIDToTypeID("Grn "), strokeColor.rgb.green); 
    effectColor.putDouble(charIDToTypeID("Bl "), strokeColor.rgb.blue); 
    effectDescriptor.putObject(charIDToTypeID("Clr "), charIDToTypeID("RGBC"), effectColor); 
    return(effectDescriptor); 
} 

var tmpC = new SolidColor(); 
tmpC.rgb.hexValue = "FF00FF"; 
var layerOptions = new ActionDescriptor(); 
var refr01 = new ActionReference(); 
var layerProperties = new ActionDescriptor(); 

layerOptions.putUnitDouble(charIDToTypeID("Scl "), charIDToTypeID("#Prc"), 400.0); 

var layerEffects = newStrokeEffect(2, tmpC, "InsF"); 

layerOptions.putObject(charIDToTypeID("FrFX"), charIDToTypeID("FrFX"), layerEffects); 

refr01.putProperty(charIDToTypeID("Prpr"), charIDToTypeID("Lefx")); 
refr01.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); 
layerProperties.putReference(charIDToTypeID("null"), refr01); 
layerProperties.putObject(charIDToTypeID("T "), charIDToTypeID("Lefx"), layerOptions); 

try { 
    executeAction(charIDToTypeID("setd"), layerProperties, DialogModes.NO); 
} catch(ex) { 
    if (ex != "Error: User cancelled the operation") 
     alert(scriptName + " newLayerEffect() exception caught? line[" + ex.line + "] " + ex); 
} 

aktif katmanı uygulamak için (ne gerekli) biraz exsample ama :-) (yalnızca Photoshop CS5'te test edilmiştir)

2

Yeni bir modül olan jamStyles, kısa bir süre önce Photoshop için JSON Action Manager komut dosyası kitaplığına eklenmiştir. Geçerli katman stili alma ve ayarlama konusunda destek sağlayan diğer şeyler arasında

, iki JavaScript işlevlerini tanımlar jamStyles.getLayerStyle ve jamStyles.setLayerStyle (her ikisi karıştırma seçenekleri ve katman efektleri) bir JSON kullanarak nesne. Ayrıca, Get Layer Style adlı bir yardımcı program betiği de sağlanmaktadır.

+0

Sonunda arama saatlerinden sonra, bu bir çalışır. İhtiyacım olan şeyi geri döndürür: '{" blendOptions ": {...}," layerEffects ": {...}}' - harika! –

İlgili konular