Автор Тема: Помогите автоматизировать процесс сборки виньетки  (Прочитано 3784 раз)

Оффлайн jazz-yАвтор темы

  • Живет здесь
  • *****
  • Сообщений: 655
Коллеги, думаю многие видели и собирали такие виньетки:


Крупный портрет ученика + остальной класс (все дети, кроме этого ученика).

Не думаю, что кто-то ожидает такой вопрос от меня, но тем не менее - как вы автоматизируете сборку? :)

У меня пока это в полуручном режиме - сначала собираю общую виньетку без одного ученика (первую сборку всегда делаю вручную, т.к. слежу за поворотом головы, за тем чтобы чередовались мальчик-девочка,  не было цветных/контрастных пятен по цвету одежды), затем экшеном прогоняю одного ребенка по кругу (так, чтобы он последовательно заменил все плашки виньеток), т.е. (в данном случае) получаю 25 разных файлов, каждый одной замененной фотографией и именем замененного ребенка. Затем вручную (основываясь на имени файла) докидываю портрет ребенка, именем которого назван файл. Мне кажется, что это можно как-то проще сделать... возможно нужно написать скрипт, выполняющий какое-то одно действие, облегчающее весь процесс. Но какой?


Оффлайн Yrii

  • Ветеран
  • ******
  • Сообщений: 1052
  • Северная Карелия
все дети, кроме этого ученика
Зачем себе усложнять, пусть будут все(и с этим учеником), а в индивидуальной просто с другим поворотом головы и в другой позе.

Оффлайн jazz-yАвтор темы

  • Живет здесь
  • *****
  • Сообщений: 655
Зачем себе усложнять, пусть будут все(и с этим учеником), а в индивидуальной просто с другим поворотом головы и в другой позе.
Это понятно (мы так и делаем последние лет 10). Просто всё чаще спрашивают именно про тот вариант, который я озвучил. Все упирается в отсутствие простого инструмента для реализации такого варианта. Пытаюсь найтит максимально универсальный подход к решению проблемы.
« Последнее редактирование: 16 Январь 2020, 02:12:49 от jazzy »

Оффлайн Влад

  • Прописан здесь
  • ****
  • Сообщений: 392
Коллеги, думаю многие видели и собирали такие виньетки
Надо в общей ветке тему открывать,здесь обитает 10 чел. 8 из который такие виньетки с прошлого века не делает.  :)
Мир на столько стал фальшивым,что почти все благодарят за ложь и обижаются на правду.

Оффлайн Chesen

  • Старожил
  • ***
  • Сообщений: 111
Если не ошибаюсь, когда-то давно на форуме demiart пользователь Pash-IV  выкладывал платный скрипт именно для таких виньеток. Последовательно менялся крупный портрет. И еще какие-то плюшки предлагались.
На мой взгляд, ни к чему эта возня. Давно делаем общую виньетку, и отдельно портрет.
« Последнее редактирование: 16 Январь 2020, 06:27:22 от Chesen »

Оффлайн ИГОРЬ

  • Ветеран
  • ******
  • Сообщений: 7117
  • Скромность красит человека. В серенький цвет.
    • Мой статус
у меня идет допустим файл обложки на котором индивидуальное фото каждого ...на ней слоями фотографии воспитанников. Выровненные и выставленные по размеру и направляющим. потом они же идут на окошки. получается подобие бутерброда из слоев . Эти слои перетаскиваю на новый холст или с этого же, но дубля( что бы потом удалить) и сжимаю (уменьшаю) до размера окошек. потом простым перетаскивание формирую виньетку. мальчик-девочка. при сноровке это идет все очень быстро.

Продажа фотошаблонов и макетов  http://forum.vinyetka.ru/index.php?topic=4159.0
вся коллекция здесь: https://vk.com/fotomakett

Оффлайн DIM

  • Global Moderator
  • Ветеран
  • *****
  • Сообщений: 3139
  • поглощаю знания
Все можно организовать в одном файле.
Подразумевается, что фото(файлы) самих детей подписаны.
На практике не прогонял, все из головы, поэтому возможны ошибки в алгоритме, но думаю, идею ты поймешь.


/* подготовка
1. В большое окошко кидаются все дети, выравниваются.
2. Далее, из подготовленных фото из большого окошка по твоему алгоритму собирается виньетка без одного ребенка. Подписывается.
3. Слой с фотографией, которого пока нет на общей виньетке самый нижний в списке портретов.
4. Слои в большом окошке делаешь невидымыми, кроме одного, которого нет на общей виньетке.
5. Делашь копию слоя с ребенком, которого нет на виньетке. Скрываешь видимость этого слоя.
6. Готовый бутерброд виньетки без портретов закидываешь в группу, даешь ей имя, к примеру, Оригинал.
7. В палитре слоев группу Оригинал перемещаешь под фото, которого нет на виньетке.
/* в цикле
8. Создаешь копию группы Оригинал.
9. Копируешь в буфер имя видимого слоя в большом окошке.
10.Сливаешь видимое фото в большом окошке с копией группы Оригинал. Даешь (из буфера) имя получившемуся слою. Скрываешь получившийся слой.
11.Переходишь к группе Оригинал, располагаешь его над только что скрытым слоем. Над ним должен быть слой следующий (скрытый) слой фото в окошке.
12.Делаешь видимым копию слоя с ребенком в большом окошке, из шага 5. (Он должен быть под группой Оригинал)
13.Выбираешь этот слой, масштабируешь его под вставку в виньетку, выделяешь слой, копируешь в буфер, удаляешь слой.
14.Переходишь к слою над копией группы Оригинал, копируешь в буфер обмена (присваиваешь переменной значение) имя слоя выше.
15.Находишь в группе Оригинал слой с именем из переменной, шаг 14
16.Выделяешь этот слой, из буфера вставляешь фото. Подписываешь вставленное фото.
17.Делаешь слой фото в большом окошке видимым.
18.Переходишь к шагу 8.
все будет хорошо

Оффлайн jazz-yАвтор темы

  • Живет здесь
  • *****
  • Сообщений: 655
DIM, проблема в том, что портрет - это не всегда то же самое фото, что и на виньетке. Иногда нужно сопоставить фото на виньетке с поясным портретом или групповой фотографией (небольшая группа 3-4 ребенка). Хочется придумать какой-то универсальный инструмент для всех возможных ситуаций :)

На мой взгляд, ключевая проблема подобных алгоритмов в том, что нужно сопоставлять слой на виньетке со слоем на портрете (к слову, это не только на таких макетах нужно). Если сопоставление делается вручную, то обычно слои подписываются номером или фамилией ребенка. Попробую набросать вот такой скриптик, посмотрю как он в работе:

Суть такая - выделяем слой на виньетке, запускаем скрипт, он находит другой слой в том же документе с таким же (полностью или частично) именем. Далее рулим экшенами или другими скриптами.

Оффлайн DIM

  • Global Moderator
  • Ветеран
  • *****
  • Сообщений: 3139
  • поглощаю знания
проблема в том, что портрет - это не всегда то же самое фото, что и на виньетке. Иногда нужно сопоставить фото на виньетке с поясным портретом или групповой фотографией
И в чем проблема? Опять же, кидаешь в psd ВСЕ подписанные фото. Просто изначально надо к имени дописать, к примеру, префикс "потрет" и обрабатывать для вставки в виньетку фото с этим префиксом.
все будет хорошо

Оффлайн jazz-yАвтор темы

  • Живет здесь
  • *****
  • Сообщений: 655
В общем, накидал пробную версию скрипта.

Его смысл в том, что он анализирует имя выделенного слоя, ищет в документе слои с похожими именами, после чего активирует их. Можно управлять видимостью, параметрами выделения, задавать абсолютный поиск (полное совпадение имени), либо поиск по словам (имя выделенного слоя разбивается на слова, после чего каждое слово ищется в других слоях, в результат попадают слои с наибольшим количеством совпадений), так же можно устанавливать фильтр по типу слоя (чтобы при выделении графического слоя скрипт не искал, например, текстовые слои). Как обычно все основные функции писал на чистом Action Manager коде, минимизировал обращения к фотошопу как мог - могу уверенно сказать, что быстрее чем в этом скрипте подобную задачу не решить (на примере из видео (59 слоев) сопоставление одной пары слоев (на моем компе) занимает около 0,1 сек)

На видео - короткий пример как собрать ту виньетку, о которой я говорил. На листе две группы слоев - в одной группе виньетки (имена слоев подписаны без номера кадра), в другой группе - портреты тех же детей (в данном случае поясные), они подписаны, но чуть по-другому (с номерами).

https://youtu.be/fWzjKyztqBg
<a href="http://www.youtube.com/watch?v=fWzjKyztqBg" target="_blank">http://www.youtube.com/watch?v=fWzjKyztqBg</a>

В итоге с помощью этого (и еще пары моих скриптов), можно собрать такую виньетку одним экшеном буквально в 10 действий.
Понимаю, что тут накладываются особенности моего рабочего процесса (как говорит Иван - "своя логика" :) ) - я не раскидываю головы непосредственно на виньетке, а делаю это на этапе подготовки макета в отдельном файле, они попадают в макет уже кропнутые, с рамкой и подписью в виде смарт-объекта. В принципе, с небольшими изменениями можно автоматизировать и более привычный большинству процесс с раскидыванием голов непосредственно на макете. Даже если вам не нужно собирать такие виньетки, то скрипт может пригодиться для автоматической линковки слоев или для других случаев, когда в документе требуется найти слой с таким же именем как и выделенный.

В течение пары дней допишу пару мелочей в скрипте, еще раз проверю на ошибки и пограничные случаи (когда что-то может пойти не так) и выложу. Пока его писал, таскал куски кода из старых скриптов (я ж лентяй - зачем 2 раза писать то, что уже написано). Заметил некоторые мелочи, которые нужно исправить - скорее всего выложу все исправления пачкой. Так же для работы скрипта требуется модифицированная версия Batch for layers - когда я его писал, планировал, но совершенно забыл добавить галочку "делать выбранные слои невидимыми" (чтобы была возможность отключить ее в подобных случаях).

 





Рейтинг@Mail.ru Яндекс цитирования Мастерхост
Виньетка.ру

16+