Как мне разбить текст на части в фотошопе?

9

У меня есть слово в текстовом слое в фотошопе. Я хочу, чтобы каждый персонаж находился на отдельном слое, как я могу это сделать?

Моше
источник
У меня та же проблема, но это для текстового слоя предложения, который мне нужно разбить на слова. Мне нужен ярлык, потому что слишком много текстовых слоев, чтобы разбить на части. и потребуется время, чтобы сделать это один за другим.
19

Ответы:

7
  1. Выберите инструмент «Текст».
  2. Введите свое письмо.
  3. Дублируйте слой.
  4. Выберите новый слой.
  5. Выделите скопированную букву и введите вторую букву.
  6. Повторите по мере необходимости.

Если вы не разбиваете «антидисстеблишментаризм», это более быстрый путь.

Lauren-Clear-Монике Ipsum
источник
9

Это можно сделать с помощью сценариев.

РЕДАКТИРОВАТЬ : я обновил свой ответ ниже, попробовав и проверив.

  • Откройте любой текстовый редактор
  • Скопируйте и вставьте в него следующий код
  • Убедитесь, что имя текстового слоя совпадает с тем, что определено в строке 20
  • Сохранить как splitText.jsx
  • Открыть с помощью Photoshop. Также убедитесь, что документ, к которому вы хотите применить это, является текущим активным документом.

Содержимое 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;

Затем переместите текстовые слои о задницу, пожалуйста

Адам Элсодани
источник
2
пс. Лорен Ипсум ответ лучше / легче: D
Адам Элсодани
1
Я искал, как это сделать. Слава за создание этого сценария. Я проверю это, когда буду рядом с компьютером, и свяжусь с вами. +1!
Моше
1
@ Адам: спасибо. Я даю вам +1 только за то, что вы прошли через все эти сценарии. :)
Лорен-Клир-Моника-Ипсум
2
Я не знал, что Photoshop может быть написан с использованием javascript
Горацио,
@Moshe @Lauren Ipsum спасибо, я посмотрю, смогу ли я развить это дальше, а затем
опубликую
2

Огромное спасибо Адаму Элсодани за ваш сценарий, это удивительно - однако, если вы похожи на меня и хотите, чтобы сценарий разрывал на части слова, а не символы, вам придется изменить его.

Вот тот же сценарий для разделения слов:

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

И просто уточнить (как я не знал, пришлось гуглить это)

  1. Сохраните это в текстовый файл (т. Е. На рабочий стол с расширением .jsx)
  2. Убедитесь, что в вашем фотошопе есть текстовый слой textlayerи этот файл открыт в фотошопе.
  3. Дважды щелкните файл.
  4. Прибыль.

Изменить: Для некоторых резонанс двойной щелчок не всегда работает, и если это не так, в photoshp перейдите в Файл> Сценарии> Обзор и дважды щелкните файл там. Это начнет бежать.

Chud37
источник
1
К вашему сведению, если вы перейдете var theOriginalTextLayer = thisDocument.artLayers.getByName("textlayer");к var theOriginalTextLayer = thisDocument.activeLayer;сценарию, он будет работать на выбранном текстовом слое: не нужно его переименовыватьtextlayer
Сергей
-1

Я просто дам свою копейку. Вы не указали, нужны ли вам новые слои в качестве редактируемого текста или просто растеризованных слоев, в последнем случае вы можете:

  1. Растеризация вашего слоя
  2. Сделайте выбор вокруг вашего первого слоя
  3. Нажмите CTRL + SHIFT + J (или CMD + SHIFT + J), чтобы вырезать выделение для нового слоя
  4. Повторите шаги 2 и 3 для каждой буквы

Опять же, делайте это, только если вы в порядке с растеризованными слоями. Если вам нужны текстовые слои, используйте ответ Lauren Ipsum, так как это, вероятно, более быстрый способ.

Лука Де Нарди
источник