Бизнес, в котором я работаю, создает изделия с лазерной гравировкой. Граверной машине требуются файлы в формате psd. Наш веб-сайт позволяет пользователям выбрать шаблон и ввести текст, который они хотят. После того, как они сделают заказ, один из наших сотрудников откроет шаблон в GIMP / Photoshop, выключит текст, затем сохранит и загрузит его. Кажется достаточно простым, но когда вы делаете сотни таких в день, кажется, стоит автоматизировать.
Основным языком, на котором я говорю, является python, но я достаточно увлекался другими языками, чтобы выполнять небольшие проекты. Я вижу, что есть несколько разных модулей PSD / photoshop (pywin32, pyps, psd-tools), но либо недостаточно документации по ним, либо они не подходят для моих целей.
Более подробно, единственное, что должно произойти, - это добавить текстовый слой, где мы можем выбрать шрифт, местоположение и, предпочтительно, такие вещи, как выделение жирным шрифтом, курсив и т. Д., Но это не обязательно. У меня есть решение, которое может создать текстовый слой (через win32com), но я не могу найти, как редактировать различные элементы текста.
import win32com.client
# Pieced together from
# http://techarttiki.blogspot.com/2008/08/photoshop-scripting-with-python.html
# and
# http://rubypane.blogspot.com/2013/01/sample-python-script-to-control.html
psApp = win32com.client.Dispatch("Photoshop.Application")
psApp.Open(r"C:\temp\blah.psd") # Opens a PSD file
doc = psApp.Application.ActiveDocument # Get active document object
layer = doc.ArtLayers[2] # Get the bottom-most layer
layers = doc.artLayers
artLayerRef = layers.add
artLayerRef.kind = 2 #Text layer
# Set the contents of the text layer.
textItemRef = artLayerRef.TextItem
textItemRef.Contents = "Hello, web!"
doc.Save()
Этот фрагмент кода создает небольшое текстовое поле без какого-либо форматирования со словами «Hello World!». Опять же, я хотел бы иметь возможность контролировать, где он находится, шрифт и, если возможно, другие его элементы. Я также открыт для других решений, будь то создание изображения в другом формате, а затем преобразование его в psd, работа с другим модулем / языком или любое другое решение, о котором могут подумать ваши блестящие умы. В худшем случае мы продолжаем делать это вручную. Спасибо за любую помощь!