SlideShare a Scribd company logo
Олексій Андрусевич “Прискорення робочого процесу в Adobe Photoshop за допомогою Javascript”
Ускорение рабочего процесса в
ADOBE PHOTOSHOP
с помощью JAVASCRIPT
Andrusevich Alex
Алексей Андрусевич
Senior level designer
И многие другие
Вступление
Скриптования и примеры моих скриптов
Написание и примеры панэлей для Photoshop
РУТИНА НЕ ДОЛЖНА ПРИВОДИТЬ К ОШИБКАМ
ОТДАЙТЕ ВСЕ «МАШИНЕ»
Изучение программирования самостоятельно - тяжелая наука...
...пока не построишь процесс правильно
Программист - лучший друг человека)
Олексій Андрусевич “Прискорення робочого процесу в Adobe Photoshop за допомогою Javascript”
Олексій Андрусевич “Прискорення робочого процесу в Adobe Photoshop за допомогою Javascript”
до 4 сек
около 2 сек
всего 0,5 сек
• 20 дней - (66,66)*20 - получим около
И ЕТО ТОЛЬКО ИЗ ЗА НЕ ИСНОЛЬЗАВАНИЯ «ХОТКЕЕВ»
Кусок кода
со
ScriptingListenerJS.log
// ===========
var idMk = charIDToTypeID( "Mk " );
var desc27 = new ActionDescriptor();
var idNw = charIDToTypeID( "Nw " );
var desc28 = new ActionDescriptor();
var idMd = charIDToTypeID( "Md " );
var idRGBM = charIDToTypeID( "RGBM" );
desc28.putClass( idMd, idRGBM );
var idWdth = charIDToTypeID( "Wdth" );
var idRlt = charIDToTypeID( "#Rlt" );
desc28.putUnitDouble( idWdth, idRlt, 512.000000 );
var idHght = charIDToTypeID( "Hght" );
var idRlt = charIDToTypeID( "#Rlt" );
desc28.putUnitDouble( idHght, idRlt, 512.000000 );
var idRslt = charIDToTypeID( "Rslt" );
var idRsl = charIDToTypeID( "#Rsl" );
desc28.putUnitDouble( idRslt, idRsl, 72.000000 );
var idpixelScaleFactor = stringIDToTypeID( "pixelScaleFactor" );
desc28.putDouble( idpixelScaleFactor, 1.000000 );
var idFl = charIDToTypeID( "Fl " );
var idFl = charIDToTypeID( "Fl " );
var idWht = charIDToTypeID( "Wht " );
desc28.putEnumerated( idFl, idFl, idWht );
var idDpth = charIDToTypeID( "Dpth" );
desc28.putInteger( idDpth, 8 );
var idprofile = stringIDToTypeID( "profile" );
desc28.putString( idprofile, """sRGB IEC61966-2.1""" );
var idDcmn = charIDToTypeID( "Dcmn" );
desc27.putObject( idNw, idDcmn, desc28 );
executeAction( idMk, desc27, DialogModes.NO );
//второе - новый слой
// =======================================================
var idMk = charIDToTypeID( "Mk " );
var desc29 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref12 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
ref12.putClass( idLyr );
desc29.putReference(idnull, ref12 );
executeAction( idMk, desc29, DialogModes.NO );
//третье - переименует данный слой в Test_layer
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc30 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref13 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref13.putEnumerated( idLyr, idOrdn, idTrgt );
desc30.putReference(idnull, ref13 );
var idT = charIDToTypeID( "T " );
var desc31 = new ActionDescriptor();
var idNm = charIDToTypeID( "Nm " );
desc31.putString( idNm, """Test_layer""" );
var idLyr = charIDToTypeID( "Lyr " );
desc30.putObject( idT, idLyr, desc31 );
executeAction( idsetd, desc30, DialogModes.NO );
Так выглядит простой скрипт,
написанный на Javascript
app.documents.add()
var layerRef = app.activeDocument.artLayers.add()
layerRef.name = "Test_Layer"
UV_ON_OFF.jsx
Включал и отключал одной клавишей слой с именем «UV»
…Одной кнопкой?
Да… Одной кнопкой?...
-30 ЧАСОВ
-210 ЧАСОВ
На одной карте
При переделке всех карт под новую спецификацию
около 20 мин
ОКОЛО 250 СAМОЛЕТОВ!
На одном самолете
При работе над всеми самолетами!
около 80часов
ПОТЕРЬ РАБОЧЕГО ВРЕМЕНИ!
Всего
- название файла
- разрешение
- расширение
- формат
- и т.д.
МЫ ЖЕ ЛЮДИ!
И ОШИБКУ МОЖЕТ СДЕЛАТЬ КАЖДЫЙ!
QA ARTIST! – ПОЙМИ И ПРОСТИ!
dokmatсhcolor
Олексій Андрусевич “Прискорення робочого процесу в Adobe Photoshop за допомогою Javascript”
- Бронированый скелет парящий в горах
- Огненный ведьма идущий зимой
- Шершавый жук смотрящий в воде
Иногда «Бредогинератор»:(
- Огненный солдат бегущий в замке
- Друид бьющийся на поле боя
- Огненный дракон дерущийся в пещере
Но бываает интересное:
diffuse
specular
glossiness
normal
opacity
ambient
ИМЯ С ПРЕФИКСОМ
ДИРЕКТОРИЯ
Олексій Андрусевич “Прискорення робочого процесу в Adobe Photoshop за допомогою Javascript”
Adobe Configurator - для создания собственных панелей
WOWP MAP PROTOTYP
- Набор скриптов для Photoshop который
позволяет в несколько раз увеличить
скорость производства прототипов карт за
счет скриптов которые делают за
художника рутинную работу
WOWP Map Prototyp
Олексій Андрусевич “Прискорення робочого процесу в Adobe Photoshop за допомогою Javascript”
8 K / 8 K 2X 4 K / 4 K
R
G
B
R
G
B
ДО ПРИМЕНЕНИЯ WOWP MAP PROTOTYP
Прототип карты производилась от 3 до 5-ти дней
ПОСЛЕ 8 ЧАСОВ
ИМЕЯ ОДНУ СТРУКТУРУ ФАЙЛОВ В ПАПКЕ,
ОДНУ СТРУКТУРУ PSD ФАЙЛОВ,
ОДИН ВИД 3D ФАЙЛОВ,
МОЖНО МАКСИМАЛЬНО ПРОСТО НАСТРОИТЬ
АВТОМАТИЗАЦИЮ С ПОМОШЬЮ СКРИПТОВ
ПРИМЕР WGPM ИНСТРУМЕНТА В PHOTOSHOP
• Написана на HTML CSS
JQUERY
• Возможность
кастомизации панели
• Гибкость настройки
каждой вкладки
• Возможность
добавления вкладок в
зависимости от отдела
(прототипирование,
текстуринг, UI итд)
ПРИМЕРЫ УТИЛИТ ДЛЯ PHOTOSHOP
Вкладка для
изменения типа карты
Утилита изменяет тип
карты одним нажатием
на иконку будь то карта
тропики, пустыня,
Антарктика и т.д.
Вкладка изменения
атласа текстур
С помощью утилиты
можно изменять как
отдельные элементы
атласа так и атлас
полностью
HEAD PAINT
COLOR PALETTE
RENAMER 2
- пишите так, как я
- пишите вместе со мной
- пишите лучше меня
Да пребудет с Вами
сверхскорость джедаев
Спасибо!
Вопросы?
a_andrusevitch@wargaming.net
Skype - dok_off
Alex Andrusevich
Senior level designer

More Related Content

PDF
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
PDF
Как выглядит современный фронтенд
PDF
Performance optimisation in javascript
PDF
Модули на C для Ruby
PDF
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
PDF
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
PDF
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
PDF
Василика Климова
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
Как выглядит современный фронтенд
Performance optimisation in javascript
Модули на C для Ruby
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
Василика Климова

What's hot (15)

PPT
Web весна 2013 лекция 9
PDF
Расширь границы возможного вместе с Gradle
PPTX
WinDbg в руках .NET разработчика
PDF
Ruby exceptions
PDF
Алексей Андросов - Debugger: Отладка кода
PPTX
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
PPTX
Droidcon Moscow 2015. Android NDK - стоит ли игра свеч Дмитрий Юницкий - Mail...
PPT
User Aggs In As
PPTX
JavaScript: прошлое, настоящее и будущее.
PPTX
Когда в C# не хватает C++
PPTX
Когда в C# не хватает C++ . Часть 3.
PPTX
Михаил Щербаков "WinDbg сотоварищи"
PDF
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
PPTX
Когда в C# не хватает C++ . Часть 2.
PPTX
WinDbg со товарищи
Web весна 2013 лекция 9
Расширь границы возможного вместе с Gradle
WinDbg в руках .NET разработчика
Ruby exceptions
Алексей Андросов - Debugger: Отладка кода
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
Droidcon Moscow 2015. Android NDK - стоит ли игра свеч Дмитрий Юницкий - Mail...
User Aggs In As
JavaScript: прошлое, настоящее и будущее.
Когда в C# не хватает C++
Когда в C# не хватает C++ . Часть 3.
Михаил Щербаков "WinDbg сотоварищи"
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Когда в C# не хватает C++ . Часть 2.
WinDbg со товарищи
Ad

Viewers also liked (20)

PDF
Lviv Freelance Forum Назар Іваненко “Під лежачий камінь вода не тече”
PDF
Lviv Freelance Forum Анастасія Новікова «Холодні продажі чи фріланс-біржі: що...
PPTX
Сергій Каніщев “Soft Launch як запорука успішного розвитку мобільної гри”
PPTX
Юрій Мірошник “Красиві і швидкі партікл ефекти в HTML5 (JavaScript)”
PDF
Lviv Outsourcing Forum 2016 Василь Милько “R&D at SoftServe created bunch of ...
PDF
Сергі Поволяшко "Замовник Вас використовує. Що робити?"
PDF
Нестор Дубневич “Темна сторона” інвестицій: як не подарувати юристу одержані ...
PDF
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
PDF
Орест Зуб “”Onboarding” або “Як ефективно допомогти клієнту використати придб...
PDF
Майстер-клас від Олексія Єгошина "Маржинальність проекту, або чому вам не під...
PPTX
UA Venture Industry in 2015
PDF
Артем Іванов “Як привести клієнтів в свій бізнес з соціальних мереж”
PPTX
Lviv Outsourcing Forum 2016 Андрій Горбатюк “Як змусити процес працювати, якщ...
PPTX
Євген Сафонов “Чому ви ніколи не зробите ефективний кейс. Фейли в SMM”
PDF
Lviv Freelance Forum Айше Борсеітова «Лайфхаки вивчення англійської»
PDF
Максим Мельник “Ігри на навколополітичні теми”
PPTX
Денис Береговий “Анатомія аутсорсингу: визначаємо структуру вашої іт компанії”
PPT
Lviv Freelance Forum Наталія Петрицин «Як успішно провести переговори і не вт...
PDF
Lviv Outsourcing Forum 2016 Сергій Лисак “Dealing with unhappy customers as a...
PDF
Христина Дикун "Відео-контент. Як створювати, де зберігати. Чому відео накращ...
Lviv Freelance Forum Назар Іваненко “Під лежачий камінь вода не тече”
Lviv Freelance Forum Анастасія Новікова «Холодні продажі чи фріланс-біржі: що...
Сергій Каніщев “Soft Launch як запорука успішного розвитку мобільної гри”
Юрій Мірошник “Красиві і швидкі партікл ефекти в HTML5 (JavaScript)”
Lviv Outsourcing Forum 2016 Василь Милько “R&D at SoftServe created bunch of ...
Сергі Поволяшко "Замовник Вас використовує. Що робити?"
Нестор Дубневич “Темна сторона” інвестицій: як не подарувати юристу одержані ...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Орест Зуб “”Onboarding” або “Як ефективно допомогти клієнту використати придб...
Майстер-клас від Олексія Єгошина "Маржинальність проекту, або чому вам не під...
UA Venture Industry in 2015
Артем Іванов “Як привести клієнтів в свій бізнес з соціальних мереж”
Lviv Outsourcing Forum 2016 Андрій Горбатюк “Як змусити процес працювати, якщ...
Євген Сафонов “Чому ви ніколи не зробите ефективний кейс. Фейли в SMM”
Lviv Freelance Forum Айше Борсеітова «Лайфхаки вивчення англійської»
Максим Мельник “Ігри на навколополітичні теми”
Денис Береговий “Анатомія аутсорсингу: визначаємо структуру вашої іт компанії”
Lviv Freelance Forum Наталія Петрицин «Як успішно провести переговори і не вт...
Lviv Outsourcing Forum 2016 Сергій Лисак “Dealing with unhappy customers as a...
Христина Дикун "Відео-контент. Як створювати, де зберігати. Чому відео накращ...
Ad

More from Lviv Startup Club (20)

PDF
Maksym Vyshnivetskyi: PMO KPIs (UA) - LemBS
PDF
Oleksandr Ivakhnenko: LinkedIn Marketing і Content Marketing: розширений підх...
PDF
Maksym Vyshnivetskyi: PMO Quality Management (UA)
PDF
Oleksandr Ivakhnenko: Вступ до генерації лідів для ІТ-аутсорсингу (UA)
PDF
Oleksandr Osypenko: Поради щодо іспиту та закриття курсу (UA)
PDF
Oleksandr Osypenko: Пробний іспит + аналіз (UA)
PDF
Oleksandr Osypenko: Agile / Hybrid Delivery (UA)
PDF
Oleksandr Osypenko: Стейкхолдери та їх вплив (UA)
PDF
Rostyslav Chayka: Prompt Engineering для проєктного менеджменту (Advanced) (UA)
PPTX
Dmytro Liesov: PMO Tools and Technologies (UA)
PDF
Rostyslav Chayka: Управління командою за допомогою AI (UA)
PDF
Oleksandr Osypenko: Tailoring + Change Management (UA)
PDF
Maksym Vyshnivetskyi: Управління закупівлями (UA)
PDF
Oleksandr Osypenko: Управління ризиками (UA)
PPTX
Dmytro Zubkov: PMO Resource Management (UA)
PPTX
Rostyslav Chayka: Комунікація за допомогою AI (UA)
PDF
Ihor Pavlenko: Комунікація за допомогою AI (UA)
PDF
Maksym Vyshnivetskyi: Управління якістю (UA)
PDF
Ihor Pavlenko: Робота зі стейкхолдерами за допомогою AI (UA)
PDF
Maksym Vyshnivetskyi: Управління вартістю (Cost) (UA)
Maksym Vyshnivetskyi: PMO KPIs (UA) - LemBS
Oleksandr Ivakhnenko: LinkedIn Marketing і Content Marketing: розширений підх...
Maksym Vyshnivetskyi: PMO Quality Management (UA)
Oleksandr Ivakhnenko: Вступ до генерації лідів для ІТ-аутсорсингу (UA)
Oleksandr Osypenko: Поради щодо іспиту та закриття курсу (UA)
Oleksandr Osypenko: Пробний іспит + аналіз (UA)
Oleksandr Osypenko: Agile / Hybrid Delivery (UA)
Oleksandr Osypenko: Стейкхолдери та їх вплив (UA)
Rostyslav Chayka: Prompt Engineering для проєктного менеджменту (Advanced) (UA)
Dmytro Liesov: PMO Tools and Technologies (UA)
Rostyslav Chayka: Управління командою за допомогою AI (UA)
Oleksandr Osypenko: Tailoring + Change Management (UA)
Maksym Vyshnivetskyi: Управління закупівлями (UA)
Oleksandr Osypenko: Управління ризиками (UA)
Dmytro Zubkov: PMO Resource Management (UA)
Rostyslav Chayka: Комунікація за допомогою AI (UA)
Ihor Pavlenko: Комунікація за допомогою AI (UA)
Maksym Vyshnivetskyi: Управління якістю (UA)
Ihor Pavlenko: Робота зі стейкхолдерами за допомогою AI (UA)
Maksym Vyshnivetskyi: Управління вартістю (Cost) (UA)

Олексій Андрусевич “Прискорення робочого процесу в Adobe Photoshop за допомогою Javascript”

  • 2. Ускорение рабочего процесса в ADOBE PHOTOSHOP с помощью JAVASCRIPT Andrusevich Alex
  • 5. Вступление Скриптования и примеры моих скриптов Написание и примеры панэлей для Photoshop
  • 6. РУТИНА НЕ ДОЛЖНА ПРИВОДИТЬ К ОШИБКАМ ОТДАЙТЕ ВСЕ «МАШИНЕ»
  • 7. Изучение программирования самостоятельно - тяжелая наука... ...пока не построишь процесс правильно
  • 8. Программист - лучший друг человека)
  • 11. до 4 сек около 2 сек всего 0,5 сек
  • 12. • 20 дней - (66,66)*20 - получим около И ЕТО ТОЛЬКО ИЗ ЗА НЕ ИСНОЛЬЗАВАНИЯ «ХОТКЕЕВ»
  • 13. Кусок кода со ScriptingListenerJS.log // =========== var idMk = charIDToTypeID( "Mk " ); var desc27 = new ActionDescriptor(); var idNw = charIDToTypeID( "Nw " ); var desc28 = new ActionDescriptor(); var idMd = charIDToTypeID( "Md " ); var idRGBM = charIDToTypeID( "RGBM" ); desc28.putClass( idMd, idRGBM ); var idWdth = charIDToTypeID( "Wdth" ); var idRlt = charIDToTypeID( "#Rlt" ); desc28.putUnitDouble( idWdth, idRlt, 512.000000 ); var idHght = charIDToTypeID( "Hght" ); var idRlt = charIDToTypeID( "#Rlt" ); desc28.putUnitDouble( idHght, idRlt, 512.000000 ); var idRslt = charIDToTypeID( "Rslt" ); var idRsl = charIDToTypeID( "#Rsl" ); desc28.putUnitDouble( idRslt, idRsl, 72.000000 ); var idpixelScaleFactor = stringIDToTypeID( "pixelScaleFactor" ); desc28.putDouble( idpixelScaleFactor, 1.000000 ); var idFl = charIDToTypeID( "Fl " ); var idFl = charIDToTypeID( "Fl " ); var idWht = charIDToTypeID( "Wht " ); desc28.putEnumerated( idFl, idFl, idWht ); var idDpth = charIDToTypeID( "Dpth" ); desc28.putInteger( idDpth, 8 ); var idprofile = stringIDToTypeID( "profile" ); desc28.putString( idprofile, """sRGB IEC61966-2.1""" ); var idDcmn = charIDToTypeID( "Dcmn" ); desc27.putObject( idNw, idDcmn, desc28 ); executeAction( idMk, desc27, DialogModes.NO ); //второе - новый слой // ======================================================= var idMk = charIDToTypeID( "Mk " ); var desc29 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref12 = new ActionReference(); var idLyr = charIDToTypeID( "Lyr " ); ref12.putClass( idLyr ); desc29.putReference(idnull, ref12 ); executeAction( idMk, desc29, DialogModes.NO ); //третье - переименует данный слой в Test_layer // ======================================================= var idsetd = charIDToTypeID( "setd" ); var desc30 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref13 = new ActionReference(); var idLyr = charIDToTypeID( "Lyr " ); var idOrdn = charIDToTypeID( "Ordn" ); var idTrgt = charIDToTypeID( "Trgt" ); ref13.putEnumerated( idLyr, idOrdn, idTrgt ); desc30.putReference(idnull, ref13 ); var idT = charIDToTypeID( "T " ); var desc31 = new ActionDescriptor(); var idNm = charIDToTypeID( "Nm " ); desc31.putString( idNm, """Test_layer""" ); var idLyr = charIDToTypeID( "Lyr " ); desc30.putObject( idT, idLyr, desc31 ); executeAction( idsetd, desc30, DialogModes.NO );
  • 14. Так выглядит простой скрипт, написанный на Javascript app.documents.add() var layerRef = app.activeDocument.artLayers.add() layerRef.name = "Test_Layer"
  • 15. UV_ON_OFF.jsx Включал и отключал одной клавишей слой с именем «UV» …Одной кнопкой? Да… Одной кнопкой?...
  • 16. -30 ЧАСОВ -210 ЧАСОВ На одной карте При переделке всех карт под новую спецификацию
  • 17. около 20 мин ОКОЛО 250 СAМОЛЕТОВ! На одном самолете При работе над всеми самолетами! около 80часов ПОТЕРЬ РАБОЧЕГО ВРЕМЕНИ! Всего
  • 18. - название файла - разрешение - расширение - формат - и т.д. МЫ ЖЕ ЛЮДИ! И ОШИБКУ МОЖЕТ СДЕЛАТЬ КАЖДЫЙ! QA ARTIST! – ПОЙМИ И ПРОСТИ!
  • 21. - Бронированый скелет парящий в горах - Огненный ведьма идущий зимой - Шершавый жук смотрящий в воде Иногда «Бредогинератор»:(
  • 22. - Огненный солдат бегущий в замке - Друид бьющийся на поле боя - Огненный дракон дерущийся в пещере Но бываает интересное:
  • 25. Adobe Configurator - для создания собственных панелей
  • 26. WOWP MAP PROTOTYP - Набор скриптов для Photoshop который позволяет в несколько раз увеличить скорость производства прототипов карт за счет скриптов которые делают за художника рутинную работу
  • 29. 8 K / 8 K 2X 4 K / 4 K R G B R G B
  • 30. ДО ПРИМЕНЕНИЯ WOWP MAP PROTOTYP Прототип карты производилась от 3 до 5-ти дней ПОСЛЕ 8 ЧАСОВ
  • 31. ИМЕЯ ОДНУ СТРУКТУРУ ФАЙЛОВ В ПАПКЕ, ОДНУ СТРУКТУРУ PSD ФАЙЛОВ, ОДИН ВИД 3D ФАЙЛОВ, МОЖНО МАКСИМАЛЬНО ПРОСТО НАСТРОИТЬ АВТОМАТИЗАЦИЮ С ПОМОШЬЮ СКРИПТОВ
  • 32. ПРИМЕР WGPM ИНСТРУМЕНТА В PHOTOSHOP • Написана на HTML CSS JQUERY • Возможность кастомизации панели • Гибкость настройки каждой вкладки • Возможность добавления вкладок в зависимости от отдела (прототипирование, текстуринг, UI итд)
  • 33. ПРИМЕРЫ УТИЛИТ ДЛЯ PHOTOSHOP Вкладка для изменения типа карты Утилита изменяет тип карты одним нажатием на иконку будь то карта тропики, пустыня, Антарктика и т.д.
  • 34. Вкладка изменения атласа текстур С помощью утилиты можно изменять как отдельные элементы атласа так и атлас полностью
  • 38. - пишите так, как я - пишите вместе со мной - пишите лучше меня Да пребудет с Вами сверхскорость джедаев