2011-09-08 42 views
9

Tôi đang thực hiện một số nghiên cứu trước khi viết kịch bản cho Photoshop CS3. Tôi muốn viết kịch bản trong Photoshop với JavaScript.Làm thế nào để bạn truy cập thông tin kiểu lớp trong Photoshop?

Tôi đã xem qua Hướng dẫn JavaScript của Photoshop, nhưng tôi không thể tìm thấy bất kỳ cách nào để lấy thông tin kiểu lớp cho một lớp (nét vẽ, độ dốc, ánh sáng bên ngoài, v.v ...).

Có một cách để đặt kiểu lớp, nhưng tôi không thể tìm thấy bất kỳ thứ gì cho phép bạn lấy thông tin.

Tôi chỉ có Photoshop CS3, vì vậy tôi đang tìm một giải pháp phù hợp với điều đó.

+1

Yup, tài liệu của Adobe rất tệ. –

+0

Haha, vâng, thậm chí không có bất kỳ manh mối nào về cách thiết lập các tùy chọn cho các kiểu lớp khác nhau (màu gradient, chiều rộng nét, vv). –

+0

Tất cả những gì tôi muốn là copy/paste trái cho PS (ctr-ins/shift-in) và tôi đã nói rằng tôi sẽ phải viết kịch bản. Bắt đầu cuộc hành trình bực bội và từ bỏ. –

Trả lời

1

Mở Bộ công cụ Adobe ExtendScript. Trong trình đơn, hãy vào Trợ giúp> Trình xem mô hình đối tượng (hoặc tương tự, của tôi là tiếng Đức).

Bên trong trình duyệt Mô hình đối tượng trong tab phụ "Trình duyệt" chọn Photoshop. Bây giờ bạn có thể tìm kiếm với trường tìm kiếm ở góc trên cùng bên phải.

Xem hình ảnh dưới đây để biết ArtLayer 's deifinition và ArtLayer.applyStyle():

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

enter image description here

Tìm kiếm xung quanh, nó tốt hơn nhiều so với tài liệu hướng dẫn của Adobe.

+0

Mẹo tuyệt vời! Điều này dễ dàng điều hướng hơn so với tệp PDF ngớ ngẩn đó. Tuy nhiên, tôi vẫn không thể tìm cách truy cập thông tin kiểu lớp. Cảm ơn vì sự trả lời! –

+0

Trình duyệt đối tượng ExtendScript hút. Họ không có SolidColor được bao gồm như là một trong các lớp tài liệu. – thenonhacker

1

Tôi hy vọng tôi không quá trễ, tôi đăng lại bài đăng của bạn, bởi vì tôi có cùng một vấn đề và tôi đã tìm thấy giải pháp trên http://www.rags-int-inc.com/PhotoTechStuff/CollageTemplate/index.html. Anh chàng này có một kịch bản gọi là "Layer Effects Options". Bạn có thể tải xuống nguồn ở dưới cùng.

Vâng, đó chỉ là một bảng điều khiển để áp dụng hiệu ứng, nhưng nếu bạn duyệt qua mã, bạn có thể trích xuất những gì bạn cần.

Đây là một exsample chút (những gì tôi cần) để áp dụng một hiệu ứng đột quỵ một lớp tích cực

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

Tôi không biết ý nghĩa chính xác của tất cả các dòng (nó chủ yếu là sao chép & dán), nhưng nó hoạt động :-) (chỉ thử nghiệm nó trên Photoshop CS5)

2

Một mô-đun mới jamStyles gần đây đã được thêm vào thư viện kịch bản Trình quản lý tác vụ JSON cho Photoshop.

Trong số những thứ khác, nó định nghĩa hai hàm JavaScript jamStyles.getLayerStylejamStyles.setLayerStyle mà cung cấp hỗ trợ cho nhận và thiết lập layer style hiện tại (cả Blending Optionshiệu ứng lớp) sử dụng một JSON vật.

Một tập lệnh tiện ích được gọi là Get Layer Style cũng được cung cấp.

+0

Cuối cùng sau nhiều giờ tìm kiếm, công cụ này hoạt động. Chỉ trả về những gì tôi cần: '{" blendOptions ": {...}," layerEffects ": {...}}' - tuyệt vời! –

Các vấn đề liên quan