Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

  • Автор темы Автор темы Cyrax
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Необходимо все файлы из одной папки (с подпапками) обработать и сохранить новые файлы с изменёнными именами в другой папке. При этом в новой папке необходимо сохранить исходную структуру подпапок. Как этой сделать в Photoshop CS2 ?
В окне "Batch" блок "Destination" подобных опций не содержит.

Другой вариант - просто скопировать всю папку и прогнать action по этим файлам с простым сохранением (Destination = Save and Close). Но в этом случае нельзя будет изменить имена файлов.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Был скрипт лет 6 назад. Автор Andrew Hall . Посмотрите на www.ps-scripts.com
Если не ошибаюсь, там была иерархия сохранения папок.
Ещё посмотрите скрипты Dr. Brown's 1-2-3 Process. Я ими не пользовался, но там настройки с подпапками есть. Найдете в сети. Они некоммерческие.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Вот оно как. Я думал, в Photoshop только action'ы можно писать.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Из-за скриптов я его только и пользую. Ускоряет работу многократно.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Хотя, наверное, записанный action и есть автоматически созданный скрипт и его можно дальше подкорректировать ?
Только на каком языке записывается action ? JavaScript ? VBA ?
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Это разные вещи. Хотя и можно конвертировать экшен в скрипт на JS, но реализация горбатая.':('
В рамках форума вряд ли рассмотришь этот вопрос. Есть книжка С.Царик "Автоматизация Photoshop CS2" Там есть инфа по проблеме.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Это разные вещи. Хотя и можно конвертировать экшен в скрипт на JS, но реализация горбатая.

тут тоже нюанс - в объектной модели JS у фотошопа очень многих функций нет. например, нет place!

экшен, да и вообще практически любое действие можно записать в JS или VB - нужно установить плагин ScriptListener (по умолчанию лежит в папке Scripting, нужно перенести в Plugins), он создаст файл ScriptingListenerJS.Log/ScriptingListenerVB.Log и оттуда можно брать код (не очень понятный, само собой, все через ActionManager и дескрипторы) для использования.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Есть попытки файл экшена "сгенерировать" в скрипт. "ActionFileToJavascript" где-то у меня был, но все надо дорабатывать руками.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

экшен, да и вообще практически любое действие можно записать в JS или VB - нужно установить плагин ScriptListener
Вы же сами говорите, что объектная модель JS содержит не все функции, которые можно записать в Action.
Просто в статьях пишут, что скриптами можно выполнять сложные действия, которые нельзя записать в Action (это понятно). Но выходит, что и обратное тоже имеет место ?

P.S. Верно ли я понимаю, что скрипты для Photoshop'а пишутся во внешних редакторах на одном из 2 языков - JavaScrip и VBA ?
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Вы же сами говорите, что объектная модель JS содержит не все функции, которые можно записать в Action.
Просто в статьях пишут, что скриптами можно выполнять сложные действия, которые нельзя записать в Action (это понятно). Но выходит, что и обратное тоже имеет место ?
Разумеется, нет. Скрипт - это программа, а экшн - просто запротоколированый список команд редактора. Экшн перевести в скрипт при известной сноровке всегда можно, но не наоборот. Скажем, так - НЕКОТОРЫЕ ПРОСТЫЕ СКРИПТЫ можно руками перевести в экшны.
P.S. Верно ли я понимаю, что скрипты для Photoshop'а пишутся во внешних редакторах на одном из 2 языков - JavaScrip и VBA ?
Редактор в CS встроенный.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Экшн перевести в скрипт при известной сноровке всегда можно
Skvoznyak ошибся ?

Редактор в CS встроенный.
Как его запустить ? Этот редактор.
У меня в меню "Scripts" только готовые скрипты есть и команда "Browse...".
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

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

Как его запустить ? Этот редактор.
У меня в меню "Scripts" только готовые скрипты есть и команда "Browse...".
Кажется, ExtendedScript, под рукой CS нету проверить.
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

ExtendScript Toolkit
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

Почему же ошибался? Он говорит то же самое.
>Экшн перевести в скрипт при известной сноровке всегда можно
>в объектной модели JS у фотошопа очень многих функций нет. например, нет place!
 
Ответ: Пакетная обработка в Photoshop CS2: как сохранить структуру папок при [Destination = Folder]

ну я может не очень хорошо выразился. в логе ScriptListener все через ActionManager и дескрипторы.

вопрос насколько это можно считать использованием объектной модели, если для тривиального действия вместо docRef.place(File(filepath)); используется

var id3 = charIDToTypeID("Plc ");
var desc2 = new ActionDescriptor();
var id4 = charIDToTypeID("null");
desc2.putPath(id4, objFile);
var id5 = charIDToTypeID("FTcs");
var id6 = charIDToTypeID("QCSt");
var id7 = charIDToTypeID("Qcsa");
desc2.putEnumerated(id5, id6, id7);
var id8 = charIDToTypeID("Ofst");
var desc3 = new ActionDescriptor();
var id9 = charIDToTypeID("Hrzn");
var id10 = charIDToTypeID("#Pxl");
desc3.putUnitDouble(id9, id10, 0.000000);
var id11 = charIDToTypeID("Vrtc");
var id12 = charIDToTypeID("#Pxl");
desc3.putUnitDouble(id11, id12, 0.000000);
var id13 = charIDToTypeID("Ofst");
desc2.putObject(id8, id13, desc3);
executeAction(id3, desc2, DialogModes.NO);
 
Статус
Закрыто для дальнейших ответов.