Редактирование текстовых слоев Photoshop PSD программным способом - PullRequest
11 голосов
/ 12 мая 2009

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

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

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

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

Ответы [ 6 ]

6 голосов
/ 12 мая 2009

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

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

3 голосов
/ 12 мая 2009

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

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

3 голосов
/ 12 мая 2009

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

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

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

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

2 голосов
/ 12 мая 2009

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

1 голос
/ 28 января 2016

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

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

npm install -g psd-cli

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

psd myfile.psd -t

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

1 голос
/ 12 мая 2009

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

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

...