Использование Javascript для Photoshop (ExtendScript) Я пытаюсь создать динамическое текстовое поле.
Моя конечная цель - скрипт, чтобы пользователь записывал свой собственный текст в новом всплывающем окне, а затем этот текст располагался в нижних 10% изображения, динамически масштабируясь, чтобы соответствовать нижним 10% изображения.
Таким образом, независимо от размеров нижних 10% (созданных аргументом resizeCanvas), текст всегда удобно помещается в нем. Поэтому, когда пользователь добавляет несколько слов, он не выглядит слишком маленьким, а когда он добавляет более длинное предложение, он не переполняется.
Вопрос, изначально заданный здесь (с картинками) https://forums.adobe.com/message/10952562#10952562
Пример начального изображения:
стартовое изображение
Всплывающее окно:
пользовательское всплывающее окно
Маленький текстовый результат:
outcome1
Длинный текст Результат:
результат 2
Вот где я сейчас нахожусь:
#target Photoshop
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
var doc = app.activeDocument;
var hgt10 = doc.height / 10;
var FillColor = new SolidColor;
FillColor.rgb.hexValue = 'ff0000';
var newHgt = doc.height + hgt10
doc.resizeCanvas(doc.width, newHgt, AnchorPosition.TOPCENTER);
var win = new Window('dialog', "Custom Text");
var grp1 = win.add('group');
grp1.alignChildren = "top";
var txt = grp1.add('edittext', [0, 0, 300, 150], "Write your message", {multiline: true, scrolling: true});
txt.active = true;
var grp2 = win.add('group');
var goBtn = grp2.add('button', undefined, "Run");
grp2.add('button', undefined, "Cancel");
var newLyr = doc.artLayers.add();
newLyr.kind = LayerKind.TEXT;
// CONTENTS
var txtLyr = newLyr.textItem
txtLyr.font = "ArialMT"
txtLyr.contents = txt.text
var uV = new UnitValue(20,'mm')
txtLyr.size = UnitValue(25,'mm')
txtLyr.color = FillColor;
txtLyr.position = [25, 2200] // x, y - Need to fix position to fit in the lower 10%
goBtn.onClick = function() {
win.close();
}
win.show();
Итак, области, в которых я хотел бы получить помощь:
1) Получение текста для размещения в новой области (созданной аргументом resizeCanvas, расширяющимся на 10%)
2) Добавление разрывов строк и автоматическое определение размера для размещения текстовых файлов различной длины в поле.
С уважением,