Редактирование текстовых слоев Photoshop PSD программным способом

StackOverflow https://stackoverflow.com/questions/850899

Вопрос

У меня есть многослойный PSD-файл, причем один конкретный слой представляет собой нерастеризованный текст.Я пытаюсь придумать, как я могу, с помощью программы bash / perl / python / какой угодно другой:

  1. загрузите PSD-файл
  2. отредактируйте текст в указанном слое
  3. выровняйте все слои на изображении
  4. сохраните в удобном для интернета формате, например PNG или JPG

Я сразу же подумал о ImageMagick - Магия изображений, но я не думаю, что смогу отредактировать текстовый слой через мгновенные сообщения.Если я смогу выполнить первые два шага каким-либо другим программным способом, я всегда могу использовать ImageMagick для выполнения последних двух шагов.

После пары часов поиска в Google и CPAN и PyPI я по-прежнему не нашел ничего многообещающего.У кого-нибудь есть совет или идеи по этому поводу?

Это было полезно?

Решение

Если вам не нравится использовать официально поддерживаемые AppleScript, JavaScript или VBScript, то есть также возможность сделать это на Python.Об этом рассказывается в статье Создание сценариев Photoshop с помощью Python, который опирается на COM-интерфейс Photoshop.

Я еще не пробовал это, так что на случай, если у вас это не сработает:Если ваш текст будет сохранен после преобразование в SVG затем вы можете просто заменить его любым инструментом, который вам нравится.После этого преобразуйте его в формат PNG (например.Автор: inkscape --export-png=...).

Другие советы

Рассматривали ли вы возможность открытия и редактирования изображения в GIMP?Он имеет очень хорошую поддержку PSD и может быть написан на нескольких языках.

Какой из них вы используете, частично зависит от вашей платформы, интерфейс Perl, насколько мне известно, в Windows не работал.Я считаю, что схема поддерживается во всех портах.

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

  1. Создайте очень простую картинку в Photoshop, возможно, с белым фоном и текстовым слоем, причем текст должен быть известной длины.
  2. Найдите нужный текст в файле и с помощью шестнадцатеричного редактора найдите поблизости длину текста (который может быть частью формата файла, а может и не быть).
  3. Попробуйте изменить текст, сначала на строку такой же длины, затем на что-то более короткое / длинное.
  4. Открывайте в Photoshop после каждого изменения, чтобы проверить, не поврежден ли файл.

Этот метод, если он жизнеспособен, будет работать только в том случае, если рассматриваемый слой содержит известную строку, которая может быть заменена вашим другим значением.Обратите внимание, что я понятия не имею, сработает ли это, поскольку у меня нет Photoshop на этом компьютере, чтобы опробовать этот метод.Может быть, вы сможете заставить это сработать?

Что касается конвертации в png, я в растерянности.Если заменяющий скрипт написан на Python, вы можете сделать это с помощью библиотеки изображений Python (PIL, что, кажется, подтверждает это), но в противном случае вам, возможно, придется просто открыть Photoshop, чтобы выполнить преобразование.Это означает, что, вероятно, вообще не стоило бы менять текст прагматично.

Вы можете использовать сам Photoshop, чтобы сделать это с помощью OLE.Конечно, вам нужно будет установить Photoshop.Win32:: OLE в Perl или аналогичном модуле в Python.Видишь http://www.adobe.com/devnet/photoshop/pdfs/PhotoshopScriptingGuide.pdf

Если вы собираетесь автоматизировать Photoshop, вам в значительной степени придется использовать собственные скриптовые системы Photoshop.Я не думаю, что есть какой-то способ обойти это.

Рассматривая проблему с другой стороны, можете ли вы экспортировать из Photoshop в какой-либо другой формат, поддерживающий слои, например PNG, который можно редактировать с помощью ImageMagick?

Вы также можете попробовать это с помощью Node.js.Я сделал Инструмент командной строки PSD

Установка однострочной командой (требуется установить NodeJS/ NPM)

npm install -g psd-cli

Затем вы можете использовать его, набрав в своем терминале

psd myfile.psd -t

Вы можете проверить код, чтобы использовать его из другого скрипта узла, или использовать его через свою оболочку из другого скрипта Bash / Perl / любого другого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top