Javascript để tự động hóa đường dẫn đến các lớp trong Photoshop


1

Tôi đang tìm kiếm một javascript có thể chạy trong Photoshop. Lý tưởng nhất, tập lệnh sẽ chuyển đổi một loạt các đường dẫn cắt thành các lớp - và sau đó lấp đầy lớp (được xác định bởi đường dẫn cắt) bằng màu đen. Nếu có thể, tôi muốn lớp giữ lại tên của đường cắt và cũng để các lớp xuất hiện theo thứ tự như đường dẫn cắt. Chẳng hạn, nếu đường cắt đầu tiên được đặt tên là "Cửa", thì tôi muốn Lớp 1 là phần cửa ... và để nó được gọi là "Cửa". Ngoài ra, thật tuyệt khi lựa chọn được lấp đầy bằng màu đen. Vì vậy, lớp "Cửa" sẽ có lựa chọn cửa chứa đầy màu đen và mọi thứ khác sẽ trong suốt.

Ai đó có thể giúp gì không?

// Create solid fills based on paths array

// hex value: FFFFFF is white, FF0000 is red, and so on.
var color = "000000";
var paths = app.activeDocument.pathItems;
var pathsLength = paths.length;
var newLayers = [];

// create solid fill layers
for(var i = 0; i < pathsLength; i++)
{
   selectPath(paths[i].name);
   createFill(color);
   var fill = app.activeDocument.activeLayer;
   fill.name = paths[i].name;
   newLayers.push(app.activeDocument.activeLayer);
}

/*
// combine shapes
for(var i = 0; i < newLayers.length; i++)
{
   app.activeDocument.activeLayer = newLayers[i];
   selectPath(newLayers[i].name + " Shape Path");
   combineShapes();
}
*/

// select path by name
function selectPath(name)
{
   var idslct = charIDToTypeID( "slct" );
   var desc50 = new ActionDescriptor();
   var idnull = charIDToTypeID( "null" );
   var ref34 = new ActionReference();
   var idPath = charIDToTypeID( "Path" );
   ref34.putName( idPath, name );
   desc50.putReference( idnull, ref34 );
   executeAction( idslct, desc50, DialogModes.NO );
};

// create solid fill based on selected path items
function createFill(hexValue)
{
   var color = new SolidColor();
   color.rgb.hexValue = hexValue != undefined ?  hexValue : "000000";

   var idMk = charIDToTypeID( "Mk  " );
   var desc51 = new ActionDescriptor();
   var idnull = charIDToTypeID( "null" );
   var ref35 = new ActionReference();
   var idcontentLayer = stringIDToTypeID( "contentLayer" );
   ref35.putClass( idcontentLayer );
   desc51.putReference( idnull, ref35 );
   var idUsng = charIDToTypeID( "Usng" );
   var desc52 = new ActionDescriptor();
   var idType = charIDToTypeID( "Type" );
   var desc53 = new ActionDescriptor();
   var idClr = charIDToTypeID( "Clr " );
   var desc54 = new ActionDescriptor();
   var idRd = charIDToTypeID( "Rd  " );
   desc54.putDouble( idRd, color.rgb.red );
   var idGrn = charIDToTypeID( "Grn " );
   desc54.putDouble( idGrn, color.rgb.green );
   var idBl = charIDToTypeID( "Bl  " );
   desc54.putDouble( idBl, color.rgb.blue );
   var idRGBC = charIDToTypeID( "RGBC" );
   desc53.putObject( idClr, idRGBC, desc54 );
   var idsolidColorLayer = stringIDToTypeID( "solidColorLayer" );
   desc52.putObject( idType, idsolidColorLayer, desc53 );
   var idcontentLayer = stringIDToTypeID( "contentLayer" );
   desc51.putObject( idUsng, idcontentLayer, desc52 );
   executeAction( idMk, desc51, DialogModes.NO );
};

// select color fill items and combine shapes
function combineShapes()
{
   var idslct = charIDToTypeID( "slct" );
   var desc55 = new ActionDescriptor();
   var idnull = charIDToTypeID( "null" );
   var ref36 = new ActionReference();
   var idPath = charIDToTypeID( "Path" );
   var idPath = charIDToTypeID( "Path" );
   var idvectorMask = stringIDToTypeID( "vectorMask" );
   ref36.putEnumerated( idPath, idPath, idvectorMask );
   var idLyr = charIDToTypeID( "Lyr " );
   var idOrdn = charIDToTypeID( "Ordn" );
   var idTrgt = charIDToTypeID( "Trgt" );
   ref36.putEnumerated( idLyr, idOrdn, idTrgt );
   desc55.putReference( idnull, ref36 );
   executeAction( idslct, desc55, DialogModes.NO );
};


Ban đầu, tôi đã lên kế hoạch sử dụng các hành động. Tuy nhiên, tôi dường như không thể tìm ra cách để tên đường dẫn trở thành tên lớp. Ngoài ra, tôi đang tìm kiếm thứ gì đó có thể chuyển đổi nhiều đường dẫn thành các lớp trong vài giây. Cảm ơn phản hồi của bạn, mặc dù. Liên kết thứ hai rất hữu ích - vì tôi thấy tập lệnh xuất các lớp thành PNG khá hữu ích. Tuy nhiên, điều đó không thực sự giải quyết vấn đề của tôi.
bryan akers

Tôi có giải pháp và đã thêm mã ở trên, cho bất cứ ai đang tìm kiếm câu trả lời.
bryan akers

Câu trả lời:


0

Lựa chọn màu sắc.

var color = app.forgroundColor.rgb.hexValue;


Hãy mở rộng câu trả lời của bạn, điều này không hữu ích lắm ngoại trừ người trong cuộc. Làm thế nào đây là câu trả lời cho câu hỏi?
user 99572 is fine
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.