Tôi có một từ trong một lớp văn bản trong photoshop. Tôi muốn mỗi nhân vật ở trên một lớp riêng biệt, làm thế nào tôi có thể làm điều đó?
Tôi có một từ trong một lớp văn bản trong photoshop. Tôi muốn mỗi nhân vật ở trên một lớp riêng biệt, làm thế nào tôi có thể làm điều đó?
Câu trả lời:
Trừ khi bạn phá vỡ "chủ nghĩa chống đối lập", đây là cách nhanh hơn để đi.
Điều này có thể được thực hiện với khả năng kịch bản.
EDIT : Tôi đã cập nhật câu trả lời của mình dưới đây đã thử và kiểm tra.
Nội dung của splitText.jsx
// enable double clicking from the Macintosh Finder or the Windows Explorer
#target photoshop
// in case we double clicked the file
app.bringToFront();
// debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
// $.level = 0;
// debugger; // launch debugger on next line
var strtRulerUnits = app.preferences.rulerUnits;
var strtTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.POINTS;
var thisDocument = app.activeDocument;
// USE THIS LINE TO GRAB TEXT FROM EXISTING LAYER
var theOriginalTextLayer = thisDocument.artLayers.getByName("NAME-OF-LAYER");
var theTextToSplit = theOriginalTextLayer.textItem.contents;
// OR USE THIS LINE TO DEFINE YOUR OWN
// var theTextToSplit = "Hello";
// suppress all dialogs
app.displayDialogs = DialogModes.NO;
// the color of the text as a numerical rgb value
var textColor = new SolidColor;
textColor.rgb.red = 0;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;
var fontSize = 120; // font size in points
var textBaseline = 480; // the vertical distance in pixels between the top-left corner of the document and the bottom-left corner of the text-box
for(a=0; a<theTextToSplit.length; a++){
// this loop will go through each character
var newTextLayer = thisDocument.artLayers.add(); // create new photoshop layer
newTextLayer.kind = LayerKind.TEXT; // set the layer kind to be text
// newTextLayer.name = textInLayer.charAt(a);
var theTextBox = newTextLayer.textItem; // edit the text
theTextBox.font = "Arial"; // set font
theTextBox.contents = theTextToSplit.charAt(a); // Put each character in the text
theTextBox.size = fontSize; // set font size
var textPosition = a*(fontSize*0.7);
theTextBox.position = Array(textPosition, textBaseline); // apply the bottom-left corner position for each character
theTextBox.color = textColor;
};
/* Reset */
app.preferences.rulerUnits = strtRulerUnits;
app.preferences.typeUnits = strtTypeUnits;
docRef = null;
textColor = null;
newTextLayer = null;
Sau đó di chuyển các lớp văn bản về ass bạn vui lòng
Cảm ơn Adam Elsodaney rất nhiều vì kịch bản của bạn, Thật tuyệt vời - Tuy nhiên nếu bạn thích tôi và muốn kịch bản xé tan các từ và không phải các nhân vật bạn sẽ phải sửa đổi nó.
Đây là cùng một kịch bản để phá vỡ các từ:
// enable double clicking from the Macintosh Finder or the Windows Explorer
#target photoshop
// in case we double clicked the file
app.bringToFront();
// debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
// $.level = 0;
// debugger; // launch debugger on next line
var strtRulerUnits = app.preferences.rulerUnits;
var strtTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.POINTS;
var thisDocument = app.activeDocument;
// USE THIS LINE TO GRAB TEXT FROM EXISTING LAYER
var theOriginalTextLayer = thisDocument.activeLayer;
var theTextToSplit = theOriginalTextLayer.textItem.contents;
// OR USE THIS LINE TO DEFINE YOUR OWN
// var theTextToSplit = "Hello";
// suppress all dialogs
app.displayDialogs = DialogModes.NO;
// the color of the text as a numerical rgb value
var textColor = new SolidColor;
textColor.rgb.red = 0;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;
var fontSize = 120; // font size in points
var textBaseline = 480; // the vertical distance in pixels between the top-left corner of the document and the bottom-left corner of the text-box
var words = theTextToSplit.split(" ");
for(a=0; a < words.length; a++){
// this loop will go through each character
var newTextLayer = thisDocument.artLayers.add(); // create new photoshop layer
newTextLayer.kind = LayerKind.TEXT; // set the layer kind to be text
var theTextBox = newTextLayer.textItem; // edit the text
theTextBox.font = "Arial"; // set font
theTextBox.contents = words[a]; // Put each character in the text
theTextBox.size = fontSize; // set font size
var textPosition = a*(fontSize*0.7);
theTextBox.position = Array(textPosition, textBaseline); // apply the bottom-left corner position for each character
theTextBox.color = textColor;
};
/* Reset */
app.preferences.rulerUnits = strtRulerUnits;
app.preferences.typeUnits = strtTypeUnits;
docRef = null;
textColor = null;
newTextLayer = null;
Và chỉ để làm rõ (Như tôi không biết, đã phải google nó)
.jsx
)textlayer
và tệp đó được mở trong photoshop.Chỉnh sửa: Đối với một số cộng hưởng, nhấp đúp không phải lúc nào cũng hoạt động và nếu không, trong photoshp, hãy chuyển đến Tệp> Tập lệnh> Duyệt và nhấp đúp vào tệp trong đó. Nó sẽ bắt đầu chạy.
var theOriginalTextLayer = thisDocument.artLayers.getByName("textlayer");
để var theOriginalTextLayer = thisDocument.activeLayer;
kịch bản sẽ làm việc trên một lớp văn bản đã chọn: không cần phải đổi tên nó thànhtextlayer
Tôi sẽ chỉ đưa xu của tôi. Bạn đã không chỉ định liệu bạn cần các lớp mới của mình dưới dạng văn bản có thể chỉnh sửa hay chỉ là các lớp rasterized, trong trường hợp sau bạn có thể:
Một lần nữa, chỉ làm điều này nếu bạn ổn với việc có các lớp rasterized. Nếu bạn cần các lớp văn bản, hãy đi với câu trả lời của Lauren Ipsum vì đây có thể là cách nhanh hơn.