Jak rozdzielić tekst w Photoshopie?

9

Mam słowo w warstwie tekstowej w Photoshopie. Chcę, aby każda postać była na osobnej warstwie, jak mogę to zrobić?

Mosze
źródło
Mam ten sam problem, ale dotyczy to warstwy tekstu zdania, którą muszę podzielić na słowa. Potrzebuję skrótu, ponieważ zawiera zbyt wiele warstw tekstu, aby można je było rozdzielić. i zajmie to trochę czasu, aby to zrobić jeden po drugim.
jjbly

Odpowiedzi:

7
  1. Wybierz narzędzie Tekst.
  2. Wpisz swój list.
  3. Powiel warstwę.
  4. Wybierz nową warstwę.
  5. Podświetl skopiowany list i wpisz drugą literę.
  6. Powtórz w razie potrzeby.

Chyba że zrywasz „antydyskryminację”, jest to szybsza droga.

Lauren-Clear-Monica-Ipsum
źródło
9

Można to zrobić za pomocą funkcji skryptowych.

EDYCJA : Zaktualizowałem moją odpowiedź poniżej, próbując i testując.

  • Otwórz dowolny edytor tekstu
  • Skopiuj i wklej do niego następujący kod
  • Upewnij się, że niezależnie od nazwy warstwy tekstowej pasuje do tego, co zdefiniowano w linii 20
  • Zapisz jako splitText.jsx
  • Otwórz w Photoshopie. Upewnij się również, że dokument, do którego chcesz to zastosować, jest obecnie aktywnym dokumentem.

Zawartość 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;

Następnie przesuń warstwy tekstowe o tyłku, który chcesz

Adam Elsodaney
źródło
2
ps. Odpowiedź Lauren Ipsum jest lepsza / łatwiejsza: D
Adam Elsodaney
1
Szukałem, jak to zrobić. Wyrazy uznania za złożenie tego skryptu. Przetestuję to, gdy będę w pobliżu komputera i skontaktuję się z Tobą. +1!
Moshe
1
@Adam: dziękuję. Daję ci +1 tylko za to, że przechodziłeś cały trud pisania skryptów. :)
Lauren-Clear-Monica-Ipsum
2
Nie wiedziałem, że Photoshop można skryptować za pomocą javascript
horatio
@Moshe @Lauren Ipsum dzięki, zobaczę, czy mogę to dalej rozwinąć, a następnie opublikuj samouczek online
Adam Elsodaney
2

Bardzo dziękuję Adamowi Elsodaneyowi za skrypt, jest niesamowity - jeśli jednak jesteś taki jak ja i chcesz, aby skrypt rozerwał słowa, a nie znaki, musisz go zmodyfikować.

Oto ten sam skrypt do dzielenia słów:

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

I tylko dla wyjaśnienia (ponieważ nie wiedziałem, musiałem google go)

  1. Zapisz to w pliku tekstowym (tj. Na pulpicie z rozszerzeniem .jsx)
  2. Upewnij się, że w Photoshopie jest nazwana warstwa tekstowa textlayeri że ten plik jest otwarty w Photoshopie.
  3. Kliknij dwukrotnie plik.
  4. Zysk.

Edycja: W przypadku niektórych rezonów podwójne kliknięcie nie zawsze działa, a jeśli nie, w Photoshp przejdź do Plik> Skrypty> Przeglądaj i kliknij dwukrotnie tam plik. Zacznie działać.

Chud37
źródło
1
FYI, jeśli zmieni var theOriginalTextLayer = thisDocument.artLayers.getByName("textlayer");się var theOriginalTextLayer = thisDocument.activeLayer;skrypt będzie działać na wybranej warstwie tekstowej: nie ma potrzeby, aby zmienić jego nazwę natextlayer
Sergey Kritskiy
-1

Po prostu dam swój grosz. Nie określiłeś, czy potrzebujesz nowych warstw jako edytowalnego tekstu, czy tylko warstw rasteryzowanych, w tym drugim przypadku możesz:

  1. Rasteryzuj warstwę
  2. Dokonaj wyboru wokół pierwszej warstwy
  3. Naciśnij CTRL + SHIFT + J (lub CMD + SHIFT + J), aby wyciąć zaznaczenie na nowej warstwie
  4. Powtórz krok 2 i 3 dla każdej litery

Ponownie, zrób to tylko wtedy, gdy masz rasteryzowane warstwy. Jeśli potrzebujesz warstw tekstowych, skorzystaj z odpowiedzi Lauren Ipsum, ponieważ jest to prawdopodobnie najszybszy sposób.

Luca De Nardi
źródło