Редактирование текстовых слоев Photoshop PSD программным способом
У меня есть мульти-слоистых PSD, с одного слоя не растрированным текстом. Я пытаюсь выяснить, как я могу, из программы bash/perl/python/whatever-else:
- загрузить PSD
- редактировать текст в слой
- сгладить все слои изображения
- сохранить как веб-дружественный формат, как 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 - использовать замену на основе регулярных выражений.
- создать очень простое изображение в Photoshop, возможно, белый фон и текстовый слой, с текстом известной длины.
- поиск файла для текста, и с помощью шестнадцатеричного редактора, поиск рядом для длины текста (который может или не может быть частью формата файла).
- попробуйте изменить текст, сначала строка той же длины, затем к чему-то более короткому/длинному.
- открыть в 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.