Создание новых объектов
Для создания новых объектов в скриптах применяется команда add(), пишется имя коллекции объекта, в которую вы хотите добавить, затем добавляется команда add().
Создание нового документа:
documents.add()
Создание нового слоя в текущий документ:
documents[0].artLayers.add()
Как можно увидеть в объектной модели Photoshop, объект Document содержит все объекты, кроме Aplication, Notifier и Preferences. Поэтому при добавлении объектов отличных от Document и Notifier необходимо ссылаться на объект Document. В Preferences, новые объекты не создаются.
В JavaScript для создания новых объектов используются имена коллекции объекта. Например, документ добавляется в коллекцию documents, слой в коллекцию artLayers, канал в коллекцию channels и т.п.
Индекс коллекции documents, как и остальных коллекций всегда начинается с 0, первый созданный документ будет иметь индекс 0, второй – индекс 1 и т.д.
Пример создания разных объектов:
//Объявляется переменная docRef для нового документа, создается новый документ
var docRef=app.documents.add()
//Объявляется переменная layerRef для нового слоя, создается новый слой
var layerRef=docRef.artLayers.add()
//Объявляется переменная channelRef для нового канала, создается новый канал
var channelRef=docRef.channels.add()
Установка текущего объекта
Для работы над объектом в Photoshop, его надо сделать текущим, например для работы со слоем, его нужно сделать текущем. В скриптах работает тоже правило, если скрипт создает более одного документа, то команды и методы будут применяться только к текущему документу. Поэтому, прежде чем работать с каким-либо объектом из коллекции его надо сделать текущим.
Для того, чтобы объект сделать текущим, перед его названием надо добавить active (например, как activeDocument, activeLayer или activeChannel)
Установка текущего документа
//Создать 2 документа
var docRef = app.documents.add()
var otherDocRef = app.documents.add()
//Сделать docRef текущим документом
app.activeDocument = docRef
Установка текущего слоя
//Создать новый документ docRef
var docRef = app.documents.add()
//Добавить новый слой
docRef.artLayers.add()
//Сделать 2 слой текущим
docRef.activeLayer = docRef.layers[1]
Индексная нумерации слоев идет от 0 и от верхнего слоя к нижнему. Индекс 0 всегда будет на самом верхнем слое.
Установка активных каналов
В документе, одновременно могут быть текущими несколько каналов, поэтому объект activeChannels определяется как массив из каналов.
Пример установки активным первого и третьего канала текущего документа:
var theChannels = new Array(docRef.channels[0], docRef.channels[2])
docRef.activeChannels = theChannels
Выбор каналов входящих в состав композитного канала:
app.activeDocument.activeChannels = activeDocument.componentChannels
Открытие документа
Для открытия существующих документов применяется команда open() из объекта Application.
Пример: требуемый фал находится на диск C:/Samples/Fish.psd
//Объявляется переменная fileRef, для файла документа
var fileRef = File("C:/Samples/Fish.psd")
//Объявляется переменная docRef, для документа, открываемого из файла
var docRef = app.open(fileRef)
Пример: открытие документа при помощи диалога открытия файлов.
//Объявляется переменная fileRef, для файла документа
//открываемого при помощи диалога выбора файлов
var fileRef =File(openDialog())
//Объявляется переменная docRef, для документа, открываемого из файла
var docRef = app.open(fileRef)
Сохранение документа
Для сохранения текущего документа служат команды save() и saveAs().
Команда save() сохраняет текущий документ в том же формате, в каком он открыт, команда saveAs(Save Options) сохраняет документ в соответствии с параметрами сохранения. Параметры сохранения зависят от выбранного формата документа.
Сохранение документа save()
app.activeDocument.save()
Если есть объявленная переменная docRef из предыдущих примеров, то команда будет записана так:
docRef.save()
Сохранение документа в формате JPG с тем же именем, без диалога ввода параметров:
//Объявление переменной jpgFile для полного пути и имени файла текущего документа
var jpgFile=new File(activeDocument.fullName)
//Объявление переменной для параметров сохранения JPEGSaveOptions
var jpgSaveOptions = new JPEGSaveOptions()
//параметр сохранения цветового профиля
jpgSaveOptions.embedColorProfile = true
//параметр разновидности формата - базовый
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE
//параметр подложка - нет
jpgSaveOptions.matte = MatteType.NONE
//параметр качество -12
jpgSaveOptions.quality = 12
//Сохранение активного документа в формате JPG
app.activeDocument.saveAs(jpgFile, jpgSaveOptions, true, Extension.LOWERCASE)
Если требуется сохранить файл в другое место или с другим именем, то эти данные заполняются в переменную jpgFile.
Пример записи текущего файла в JPG с тем же именем, но с диалогом выбора папки для сохранения:
//Объявление переменной для папки, выбираемой через диалог выбора папки
var myFolder = Folder().selectDlg("Выберите папку куда сохранить файл:")
//Объявление переменной для имени текущего документа
var myName=activeDocument.name
//Объявление переменной для нового файла в формате JPG
var jpgFile=new File(myFolder+myName)
//Объявление переменной для параметров JPEGSaveOptions
jpgSaveOptions = new JPEGSaveOptions()
jpgSaveOptions.embedColorProfile = true
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE
jpgSaveOptions.matte = MatteType.NONE
jpgSaveOptions.quality = 12
//Сохранение активного документа в формате JPG app.activeDocument.saveAs(jpgFile, jpgSaveOptions, true, Extension.LOWERCASE)
Установка параметров приложения.
Объект Preferences содержит параметры и настройки объекта Application. С его помощью можно устанавливать параметры пипетки, цветов, единиц измерения, настроек программы Photoshop.
Изменение единиц измерения линейки на дюймы и шрифтов на пиксели:
preferences.rulerUnits = Units.INCHES
preferences.typeUnits = TypeUnits.PIXELS
список значений Units:
- CM
- INCHES
- MM
- PERCENT
- PICAS
- PIXELS
- POINTS
Разрешение или запрещение диалогов
Диалоговые окна возникают для ввода, подтверждения или информирования о параметрах выполняемой команды. Важно уметь правильно управлять диалогами при работе скрипта. Если появляется диалоговое окно, наш скрипт останавливается, ожидая наших действий, такое поведение нормально для интерактивного скрипта, но если нам нужен скрип, работающий в пакетном режиме, то диалоговые окна нужно выключать.
Чтобы установить параметры диалога используется свойство displayDialogs объекта Application
Все диалоги отключены:
displayDialogs = DialogModes.NO
список значений DialogModes:
- ALL – все диалоги включены
- ERROR – отображаются только сообщения об ошибках
- NO – все диалоги выключены
Если в примере сохранения документа в JPG мы включим все диалоги:
displayDialogs = DialogModes.ALL
var jpgFile=new File(activeDocument.fullName)
jpgSaveOptions = new JPEGSaveOptions()
jpgSaveOptions.embedColorProfile = true
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE
jpgSaveOptions.matte = MatteType.NONE
jpgSaveOptions.quality = 12
app.activeDocument.saveAs(jpgFile, jpgSaveOptions, true, Extension.LOWERCASE)
то программа покажет диалог с выбором папки и именем файла, диалог задания параметров сохранения JPG формата.