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

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

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

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

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

6 ответов


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

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


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

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


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

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

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

Что касается преобразования в png, I я в растерянности. Если сценарий замены находится в 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/whatever.