Ich habe ein Wort in einer Textebene in Photoshop. Ich möchte, dass sich jeder Charakter auf einer separaten Ebene befindet. Wie kann ich das tun?
Ich habe ein Wort in einer Textebene in Photoshop. Ich möchte, dass sich jeder Charakter auf einer separaten Ebene befindet. Wie kann ich das tun?
Antworten:
Dies ist der schnellere Weg, es sei denn, Sie brechen den "Antidisestablishmentarianismus" auf.
Dies kann mit Skriptfunktionen erfolgen.
EDIT : Ich habe meine Antwort unten aktualisiert, nachdem ich mich bewährt habe.
Inhalt von 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;
Dann verschieben Sie die Textebenen bitte um Arsch
Vielen Dank Adam Elsodaney für Ihr Skript. Es ist erstaunlich. Wenn Sie jedoch wie ich sind und möchten, dass das Skript Wörter und keine Zeichen auseinander reißt, müssen Sie es ändern.
Hier ist das gleiche Skript, um Wörter auseinanderzubrechen:
// 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;
Und nur zur Klarstellung (Wie ich nicht wusste, musste ich googeln)
.jsx
)textlayer
, dass in Ihrem Photoshop eine Textebene mit dem Namen vorhanden ist und dass diese Datei in Photoshop geöffnet ist.Bearbeiten: Bei einigen Resonanzen funktioniert ein Doppelklick nicht immer. Wenn dies nicht der Fall ist, gehen Sie in Photoshp zu Datei> Skripte> Durchsuchen und doppelklicken Sie dort auf die Datei. Es wird anfangen zu rennen.
var theOriginalTextLayer = thisDocument.artLayers.getByName("textlayer");
zum var theOriginalTextLayer = thisDocument.activeLayer;
Skript wechseln , funktioniert dies auf einer ausgewählten textlayer
Ich gebe nur meinen Penny. Sie haben nicht angegeben, ob Sie Ihre neuen Ebenen als bearbeitbaren Text oder nur als gerasterte Ebenen benötigen. Im letzteren Fall können Sie:
Wiederholen Sie dies nur, wenn Sie mit gerasterten Ebenen einverstanden sind. Wenn Sie Textebenen benötigen, wählen Sie Lauren Ipsum, da dies wahrscheinlich der schnellere Weg ist.