Photoshop에서 새 그림 작업을 시작할 때 수행하는 모든 다른 작업을 자동화하는 스크립트를 만드는 동안 다음과 같은 문제가 발생했습니다.레이어를 복제하고 이름을 바꾸는 Photoshop 스크립트
다른 그룹과 다른 그룹을이 그룹 내에 만들고 싶습니다. 모든 것은이 때까지 완벽하게 정상적으로 진행됩니다
#target photoshop
app.bringToFront();
var doc = app.activeDocument;
newCurve();
var clippingHelpLayerLight = doc.activeLayer;
clippingHelpLayerLight.blendMode = BlendMode.SCREEN;
clippingHelpLayerLight.name = "Clipping Help Layer - Light";
clippingHelpLayerLight.visible = false;
clippingHelpLayerLight.duplicate();
var clippingHelpLayerLighter = doc.activeLayer;
clippingHelpLayerLighter.name = "Clipping Help Layer - Lighter";
clippingHelpLayerLighter.visible = false;
function newCurve() {
var c_ADJ_LAYER = charIDToTypeID("AdjL");
var c_ADJUSTMENT = charIDToTypeID("Adjs");
var c_CHANNEL = charIDToTypeID("Chnl");
var c_COMPOSITE = charIDToTypeID("Cmps");
var c_CURVE = charIDToTypeID("Crv ");
var c_CURVE_A = charIDToTypeID("CrvA");
var c_CURVES = charIDToTypeID("Crvs");
var c_HORIZONTAL = charIDToTypeID("Hrzn");
var c_MAKE = charIDToTypeID("Mk ");
var c_NULL = charIDToTypeID("null");
var c_POINT = charIDToTypeID("Pnt ");
var c_TYPE = charIDToTypeID("Type");
var c_USING = charIDToTypeID("Usng");
var c_VERTICAL = charIDToTypeID("Vrtc");
var d_CURVES_LAYER = new ActionDescriptor();
// Contains all the information necessary to perform the "MAKE" action
var r_CLASS = new ActionReference();
r_CLASS.putClass(c_ADJ_LAYER);
d_CURVES_LAYER.putReference(c_NULL, r_CLASS);
// Class of make action is of an ajdustment layer
var d_TYPE_CURVES = new ActionDescriptor();
// Contains all the information about all the curves
var d_CHANNEL_CURVES = new ActionDescriptor();
var l_CHANNEL_CURVES = new ActionList();
// Contains a list of channel curves
var d_CHANNEL_CURVE = new ActionDescriptor();
// Information for 1 channel curve
var r_CHANNEL = new ActionReference();
r_CHANNEL.putEnumerated(c_CHANNEL, c_CHANNEL, c_COMPOSITE);
// This curve is for the composite channel - VARIES
d_CHANNEL_CURVE.putReference(c_CHANNEL, r_CHANNEL);
// Contains the point list
var l_POINTS = new ActionList();
// List of points for this channel - LENGTH VARIES
var d_POINT = new ActionDescriptor();
// One point on the curve, has INPUT and OUTPUT value
d_POINT.putDouble(c_HORIZONTAL, 0.000000);
d_POINT.putDouble(c_VERTICAL, 0.000000);
l_POINTS.putObject(c_POINT, d_POINT);
//var d_POINT3 = new ActionDescriptor();
d_POINT.putDouble(c_HORIZONTAL, 255.000000);
d_POINT.putDouble(c_VERTICAL, 255.000000);
l_POINTS.putObject(c_POINT, d_POINT);
// Made the list of points
d_CHANNEL_CURVE.putList(c_CURVE, l_POINTS);
// Now have a list of points for a specific channel
l_CHANNEL_CURVES.putObject(c_CURVE_A, d_CHANNEL_CURVE);
// Add to the list of channel curves
d_CHANNEL_CURVES.putList(c_ADJUSTMENT, l_CHANNEL_CURVES);
// All the channel curves are inside here
d_TYPE_CURVES.putObject(c_TYPE, c_CURVES, d_CHANNEL_CURVES);
// .....
d_CURVES_LAYER.putObject(c_USING, c_ADJ_LAYER, d_TYPE_CURVES);
// package the curves and definition of the adjustment layer type
executeAction(c_MAKE, d_CURVES_LAYER, DialogModes.NO);
}
는 실제로 "클리핑 도움말 레이어 - 라이트"라는 제 1 층 만들려는, 혼합 모드 : 화면과 전원을 끄십시오. 그런 다음 새 레이어의 이름을 "클리핑 도움말 레이어 - 더 밝게"로 변경하고 끕니다. 이처럼
: Screenshot of what I would like to do
그것은 2 층을 만들 않지만, 첫 번째는 그 이름의 끝에서 "복사"를 가지고 있으며이 켜져 유지합니다.
Screenshot of the actual result
이유는 무엇입니까?
예상대로 작동하지 않으며 그 문제를 해결할 수없는 이유를 이해할 수 없습니다.
도움이 될 것입니다.
소스 이미지가 보이지 않으므로 어둠 속에서 찌르는 것입니다. getLayerByname을 사용하여 새로운 밝은 레이어를 activeLayer로 만들 수 있습니다. –
답변 해 주셔서 감사합니다. 스크립팅에 대한 도움을 요청한 것은 이번이 처음이었고 여기에 내 질문에 유용한 부분 만 복사하여 간단하게 유지하려고했습니다. 라이트 - doc.activeLayer = doc.artLayers.getByName ("클리핑 도움말 층 : 지금 – metalmp3
그래서 내가 두 번째 이름을 변경하기 전에이 작업을 추가하려고 ... 내가 이해하는 코드의 충분한 복사하지 않은 실현 부"); var clippingHelpLayerLighter = doc.activeLayer; clippingHelpLayerLighter.name = "클리핑 도움말 레이어 - 더 밝게"; clippingHelpLayerLighter.visible = false; 또는 이와 유사 할 수도 있습니다. var clippingHelpLayerLighter = doc.artLayers.getByName ("클리핑 도움말 레이어 - 라이트 복사"); 하지만 getByName이 작동하지 않는다는 이유를 모르겠다.이 레이어를 찾지 못했다 ... – metalmp3