Como separo o texto no Photoshop?

9

Eu tenho uma palavra em uma camada de texto no photoshop. Eu quero que cada personagem esteja em uma camada separada, como posso fazer isso?

Moshe
fonte
Eu tenho o mesmo problema, mas é para uma camada de texto de frase que eu preciso dividir em palavras. Eu preciso de um atalho, porque são muitas as camadas de texto para separar. e levará tempo para fazê-lo um por um.
jjbly

Respostas:

7
  1. Selecione a ferramenta Tipo.
  2. Digite sua carta.
  3. Duplique a camada.
  4. Selecione a nova camada.
  5. Destaque a letra copiada e digite a segunda letra.
  6. Repita conforme necessário.

A menos que você esteja rompendo o "antidisestabelecimento doarianismo", esse é o caminho mais rápido a seguir.

Lauren-Clear-Monica-Ipsum
fonte
9

Isso pode ser feito com recursos de script.

EDIT : Atualizei minha resposta abaixo depois de tentar e testar.

  • Abra qualquer editor de texto
  • Copie e cole o seguinte código nele
  • Verifique se o nome da camada de texto corresponde ao que está definido na linha 20
  • Salvar como splitText.jsx
  • Abra com o Photoshop. Verifique também se o documento ao qual você deseja aplicar é o documento ativo no momento.

Conteúdo 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;

Em seguida, mova as camadas de texto sobre você, por favor

Adam Elsodaney
fonte
2
ps. A resposta de Lauren Ipsum é melhor / mais fácil: D
Adam Elsodaney
11
Eu estava procurando como fazer isso. Parabéns por montar este script. Vou testá-lo quando estiver perto de um computador e voltar para você. +1!
Moshe
11
@ Adam: obrigado. Estou lhe dando +1 apenas por passar por todo esse esforço de criação de scripts. :)
Lauren-Clear-Monica-Ipsum
2
Eu não sabia o photoshop pode ser programado usando javascript
horatio
@Moshe @Lauren Ipsum obrigado, vou ver se consigo desenvolver mais isso e depois postar um tutorial on
Adam Elsodaney
2

Muito obrigado Adam Elsodaney por seu script, é incrível - No entanto, se você é como eu e queria que o script dissociasse palavras e não caracteres, será necessário modificá-lo.

Aqui está o mesmo script para separar as palavras:

// 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;

E só para esclarecer (como eu não sabia, tive que pesquisar no google)

  1. Salve isso em um arquivo de texto (ou seja, na área de trabalho com a extensão .jsx)
  2. Verifique se há uma camada de texto no seu photoshop chamada textlayere se esse arquivo está aberto no photoshop.
  3. Clique duas vezes no arquivo.
  4. Lucro.

Edit: Para alguns reson, clicar duas vezes nem sempre funciona e, se não, no photoshp, vá para File> Scripts> Browse e clique duas vezes no arquivo. Vai começar a correr.

Chud37
fonte
11
FYI, se você mudar var theOriginalTextLayer = thisDocument.artLayers.getByName("textlayer");para var theOriginalTextLayer = thisDocument.activeLayer;o script irá funcionar em uma camada de texto selecionado: não há necessidade de mudar o nome paratextlayer
Sergey Kritskiy
-1

Vou apenas dar meu centavo. Você não especificou se precisa das novas camadas como texto editável ou apenas camadas rasterizadas. No último caso, você pode:

  1. Rasterize sua camada
  2. Faça uma seleção em torno da sua primeira camada
  3. Pressione CTRL + SHIFT + J (ou CMD + SHIFT + J) para cortar a seleção em uma nova camada
  4. Repita as etapas 2 e 3 para cada letra

Mais uma vez, faça isso apenas se você estiver bem com camadas rasterizadas. Se você precisar de camadas de texto, vá com a resposta Lauren Ipsum, pois provavelmente é a maneira mais rápida.

Luca De Nardi
fonte