J'ai un mot dans un calque de texte dans photoshop. Je veux que chaque personnage soit sur un calque séparé, comment faire?
J'ai un mot dans un calque de texte dans photoshop. Je veux que chaque personnage soit sur un calque séparé, comment faire?
Réponses:
À moins que vous ne brisiez «l'anti-stabilisationnalisme», c'est la façon la plus rapide d'aller.
Cela peut être fait avec des capacités de script.
EDIT : J'ai mis à jour ma réponse ci-dessous après avoir essayé et testé.
Contenu de 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;
Ensuite, déplacez les calques de texte sur le cul, s'il vous plaît
Merci beaucoup Adam Elsodaney pour votre script, c'est incroyable - Cependant, si vous êtes comme moi et que vous vouliez que le script déchire les mots et non les personnages, vous devrez le modifier.
Voici le même script pour séparer les mots:
// 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;
Et juste pour clarifier (comme je ne savais pas, je devais google)
.jsx
)textlayer
et que ce fichier est ouvert dans photoshop.Modifier: Pour certains résons, le double-clic ne fonctionne pas toujours, et si cela ne fonctionne pas, dans photoshp, allez dans Fichier> Scripts> Parcourir et double-cliquez sur le fichier. Ça va commencer à fonctionner.
var theOriginalTextLayer = thisDocument.artLayers.getByName("textlayer");
au var theOriginalTextLayer = thisDocument.activeLayer;
script fonctionnera sur un calque de texte sélectionné: pas besoin de le renommertextlayer
Je vais juste donner mon sou. Vous n'avez pas spécifié si vous avez besoin de vos nouveaux calques sous forme de texte modifiable ou simplement de calques pixellisés, dans ce dernier cas, vous pouvez:
Encore une fois, ne faites cela que si vous êtes d'accord avec les couches tramées. Si vous avez besoin de couches de texte, allez avec la réponse de Lauren Ipsum car c'est probablement le moyen le plus rapide.