В этой статье я хочу познакомить вас с использованием сценариев Photoshop в Python под Windows. Для всех пользователей Mac есть альтернативный способ через AppScript, однако, не обладая необходимыми знаниями, я не смогу его подробно описать. Если вы используете Windows или у вас установлена версия Windows на разделе вашего Mac, вам потребуется лишь установленная версия Photoshop для следования этому руководству.
Моя задача состояла в программном создании нескольких изображений из шаблона Photoshop, где каждый файл должен был выводить шаблон с измененным текстом на одном из текстовых слоёв.
Цель данной статьи – научить вас использовать базовый шаблон Photoshop с несколькими текстовыми слоями, изменять текстовые значения этих слоёв и экспортировать результат в формате PNG. С помощью функций и циклов, я также продемонстрирую, как автоматически создавать сотни изображений одновременно.
К применению Пайтона для Фотошопа я пришел после нескольких месяцев обучения этому языку программирования. Очень советую по возможности изучить лучшие курсы по обучению Python, а также заинтересоваться интеграцией других языков в работу графического дизайнера — это здорово помогает экономить время.
- Открытие Photoshop с помощью Python
- Как изменить текстовое содержимое слоя Photoshop с помощью Python
- Изменение размера текстового слоя с помощью Python
- Как изменить размер изображений в Photoshop с помощью Python
- Как скрывать/показывать слои Photoshop с помощью Python
- Экспорт PNG в Photoshop с помощью Python
- Экспорт JPG в Photoshop с помощью Python
- Создание вариантов на основе шаблона Photoshop с помощью Python
Открытие Photoshop с помощью Python
Первое, что мы хотим сделать, это запустить Photoshop. Чтобы отдать приказ, нам понадобятся Win32 COM и модуль OS. Импортировав их, мы можем запустить наше приложение Photoshop и сохранить его в переменной, которую мы назовем psApp, следующим образом:
import win32com.client
import os
psApp = win32com.client.Dispatch("Photoshop.Application")
Выполнение представленного выше кода приведет к запуску приложения Photoshop. Теперь мы можем двигаться дальше и открыть наш файл .psd, который будет служить основой/шаблоном для всех создаваемых вариантов.
Чтобы открыть файл .psd в Python, нам просто нужно вызвать класс «Open» нашего объекта psApp и указать путь к файлу .psd следующим образом:
psApp.Open(r"C:\Users\Yaniss Illoul\eSports Facts Scripts\templateplayground.psd")
Этот фрагмент кода после выполнения должен открыть ваш шаблон в экземпляре Photoshop.
Как изменить текстовое содержимое слоя Photoshop с помощью Python
Теперь нам нужно создать объект, содержащий все ваши слои. Назовем его «doc», то есть документ.
doc = psApp.Application.ActiveDocument
Следующий шаг — найти слои, которые вы хотите редактировать, и изучить их содержимое. В данном случае я хочу получить доступ к содержимому слоя «Факты», чтобы в конечном итоге отредактировать его. Для этого нам нужно вызвать класс «ArtLayers» переменной, хранящей документ, а затем вызвать другой класс, который позволит нам редактировать его содержимое. Выполните следующие шаги:
layer_facts = doc.ArtLayers["Facts"]
text_of_layer = layer_facts.TextItem
text_of_layer.contents = "This is an example of a new text."
И вуаля.
Изменение размера текстового слоя с помощью Python
Допустим, вы понимаете, что часть текста не помещается в исходный слой. Идеальным решением здесь было бы изменение размера шрифта. Это можно сделать с помощью простой команды, как показано здесь:
text_of_layer.size = 55
Результат:
Как изменить размер изображений в Photoshop с помощью Python
Если у вас много изображений, которым нужно изменить размер, то вы наверняка хотите иметь возможность как-то автоматизировать этот процесс. К счастью, этот модуль Python позволяет легко изменить размер активного документа.
Вот код, который мы используем для этого:
doc.ResizeImage(Width=2048,
Height=2048,
Resolution=300,
ResampleMethod=8)
Обратите внимание, что Height, Resolution и ResampleMethod являются необязательными аргументами. Вы вполне можете просто указать Width, и Photoshop сохранит пропорции вашего файла и разрешение по умолчанию. Довольно просто.
Как скрывать/показывать слои Photoshop с помощью Python
Одна из вещей, которую я действительно хотел сделать в этом шаблоне, — это возможность менять фоновое изображение в зависимости от того, о чем был текст. Например, если текст был связан с видеоигрой Fortnite, я хотел отобразить фоновое изображение, связанное с Fortnite. Если текст был посвящен игре Call of Duty, то код должен был сделать фоновое изображение, посвященное Call of Duty.
Чтобы сделать это, мне нужно было найти способ задействовать параметр видимости слоя с помощью Python. К счастью, есть простой способ сделать это, как показано в приведенном ниже фрагменте:
layerPs = doc.ArtLayers["Name_of_Layer_Here"]
layerPs.visible = False # Or True if you want to unhide it.
Первое, что мы хотим сделать, это выбрать слой, на котором мы будем действовать, как показано в первой строке. Просто замените «Name_of_Layer_Here» на имя слоя, который вы хотите отобразить или скрыть.
Вторая строка кода устанавливает статус «видимый». Единственное, что вам нужно, это установить значение «False», чтобы скрыть слой, или «True», чтобы отобразить его.
И вот так мы можем запустить этот код одновременно с редактированием текста, чтобы автоматически адаптировать фон или любое другое изображение к новому генерируемому содержимому.
Экспорт PNG в Photoshop с помощью Python
После завершения редактирования, которое мы хотели сделать, настало время экспортировать результат в удобный для использования в Интернете формат. Чтобы выполнить этот шаг, нам необходимо определить параметры экспорта и указать путь и имя файла, который мы хотим вывести. Вот код, необходимый для выполнения этого шага:
options = win32com.client.Dispatch('Photoshop.ExportOptionsSaveForWeb')
options.Format = 13 # PNG Format
options.PNG8 = False # Sets it to PNG-24 bit
pngfile = "C:/Users/Yaniss Illoul/eSports Facts Scripts/test.png"
После того как все эти переменные установлены, мы можем экспортировать наш файл с помощью этой строки кода:
doc.Export(ExportIn=pngfile, ExportAs=2, Options=options)
И вот файл во всей своей красе:
Экспорт JPG в Photoshop с помощью Python
JPG — это еще один формат файлов, который обычно используется для сохранения файлов в конце проекта. К счастью, сохранить проект Photoshop с помощью python в формате JPG так же просто, как и файл в PNG.
Вот параметры экспорта, которым необходимо следовать:
options = win32com.client.Dispatch('Photoshop.ExportOptionsSaveForWeb')
options.Format = 6 # JPEG
options.Quality = 100 # Value from 0-100
jpgFile = r"C:\Users\Yaniss Illoul\Desktop\newFile.jpg"
doc.Export(ExportIn=jpgFile, ExportAs=2, Options=options)
Как видите, нам пришлось изменить только параметр Fornat на цифру 6, которая представляет собой формат JPEG для Photoshop. Третья строка также позволяет регулировать качество файла, как при сохранении вручную. Шкала варьируется от 0 до 100. Если вы не укажете параметр качества, значение по умолчанию будет равно 60.
Создание вариантов на основе шаблона Photoshop с помощью Python
Теперь, когда мы знаем, как изменить текст слоя в Photoshop с помощью Python и как экспортировать результат, пришло время настроить себя на создание десятков файлов в мгновение ока. Здесь я расскажу, как можно создавать сотни изображений.
Текст, который вы видите на этих изображениях, был извлечен из API с сайта Esports Earnings. Для простоты мы просто создадим словарь, содержащий некоторый текст, и создадим цикл.
Первое, что мы хотим сделать, — это создать словарь с некоторыми образцами значений, как показано ниже:
dict_sample = {"First_Thing":"This is the first sentence.",
"Second_Thing":"This is the second sentence.",
"Third_Thing":"This is the third sentence.",
"Fourth_Thing":"This is the fourth sentence.",
"Fifth_Thing":"This is the fifth sentence."}
После этого мы можем создать простой цикл, который будет:
- Заменять содержимое текстового слоя на содержимое значения в цикле.
- Определите имя экспортируемого файла.
- Экспортировать файл
layer_facts = doc.ArtLayers["Facts"]
text_of_layer = layer_facts.TextItem
options = win32com.client.Dispatch('Photoshop.ExportOptionsSaveForWeb')
options.Format = 13 # PNG
options.PNG8 = False # Sets it to PNG-24 bit
exportRoot = "D:/Bureau/folder_test/"
# For every key and value in the items of the dictionary "dict_sample"
for key,value in dict_sample.items():
# Replace Text of text Layer
text_of_layer.contents = value
fileName = exportRoot + key + ".png"
doc.Export(ExportIn=fileName, ExportAs=2, Options=options)
Вот как выглядит код. Теперь давайте разберем его по частям.
Строки 1 и 2 предназначены для выбора слоя, на котором будет работать код. Слой «Факты» — это текстовый слой, в котором находится текст, который я хочу отредактировать.
Строки 4, 5 и 6 — это параметры экспорта PNG, которые мы собираемся передать программе, чтобы она знала, в каком формате экспортировать файл.
Строка 8 — это расположение папки, в которую мы хотим поместить файлы. Полное имя пути будет построено на основе этого корневого расположения позже.
Затем мы входим в цикл. Для каждого ключа и его значения, имеющегося в словаре, строка 16 изменяет содержимое текстового слоя «Факты» на значение ключа, который был представлен циклу.
Строка 18 довольно важна, поскольку она создает полный путь, по которому будет происходить экспорт и под каким именем будет сохранен файл. Здесь именем файла становится ключ словаря в цикле с расширением «.png».
Наконец, в строке 20 выполняется экспорт результата в соответствии с параметрами, заданными в строках 4,5 и 6, и именем файла (fileName), заданным в строке 18. Повторяем для каждой присутствующей комбинации ключ/значение
И вот результаты:
Как видите, все сработало, как и планировалось.
Возможно ли сделать автоматическое наложение картинки в мокап? с искревлением, изменеием цвета и тд