Як зробити GIF анімацію нескінченної рекурсії фотографій
Урок для фотошопу
Можливо, це вас зацікавить
Якщо ви сюди зайшли – ви, напевно, знаєте, що таке рекурсія фото. Якщо ж ні, то, минаючи нудні пояснення, просто покажу, як вона виглядає.

У цій статті я розповім, як створити таку GIF анімацію з вашої фотографії за допомогою створених мною скриптів. Цей урок розрахований на середній рівень володіння програмою Photoshop. Якщо ж у вас стосунки з ним натягнуті, а зробити гіфку зі своєї фотографії все-таки хочеться, то скористайтеся іншим моїм безкоштовним сервісом. Ну а якщо ви все-таки сповнені рішучості все зробити самостійно – давайте скоріше почнемо.
1. Підготовка
1.1 Основа роботи – вибір вихідного зображення. Для роботи я вибрав це зображення з вільного доступу.

Оскільки зображення має нескінченно повторювати саме себе, фото людини з рамкою в руках підходить якнайкраще. Але це може бути не лише рамка, а й картина на стіні, вікно, відображення у дзеркалі – все залежить від вашого бажання експериментувати. Але для першого разу я рекомендую використовувати фото максимально схоже на мій вихідник. Важливо, щоб рамка в руках була ближчою до середини всієї фотографії, і займала не менше 50% від площі всієї фотографії
1.2 Створюємо дублікат фону у разі невдачі, приховайте його.

1.3 Збільшуємо всю фотографію на 200% -300%
1.4 Обрізаємо зображення, роблячи його квадратним. Кадрувати потрібно так, щоб рамка виявилася ближчою до середини. Я роблю так: збільшую канву (Canvas) на 200%, відзначаю центр двома лініями (Guides).
1.5. Правильно позиціоную фото до центру.

На новому шарі вирізаємо вміст рамки так, щоб усередині рамка була прозорою.
2. Розрахунок параметрівмайбутньої анімації
2.1 Клонуємо отриманий шар (Duplicate layer у контекстному меню, або просто перетягнути шар у піктограму шару у свитку Layers)
2.2 З'ясовуємо, наскільки треба зменшити та повернути зображення, щоб воно опинилося у рамці.
2.3 Вибираємо нижній шар-клон, масштабуємо та обертаємо так, щоб цей шар повністю опинився у рамці верхнього шару. Бажано зробити так, щоб усі персонажі, які були присутні на фото, влізли в рамку. Не застосовуючи зміни,списуємо параметри змін, масштабування та кут повороту. У моєму прикладі вийшло 54% масштабування, 10 град. поворот. Тепер цей шар можна видалити.

3. Створюємо коридор у глибину
3.1 Виберіть початковий шар. Застосуйте скрипт createCorridor.jsx (див. також Як виконати скрипт у Photoshop). У параметрах задайте достатню кількість кроків, так щоб кінцеве зображення було всього кілька пікселів. Інші параметри масштабування та кут повороту задавайте ті, що з'ясували на попередньому кроці.
3.2 Тепер трохи творчості. Є у вас центр рамки не збігається із центром всього зображення вашого проекту. А це як правил так і є. Слід позиціонувати шари почергово зверху вниз так що зображення в рамці, яке ви редагуєте, відповідало тому, що буде зовні рамки. (Див. малюнок). Таким чином, найнижче, маленьке зображення, опиниться на місці центру обертання і руху всього коридору.
3.3 Коли все ретельно виконано та перевірено за попередніми кроками, всі видимі шари можна об'єднати. (Ctrl+Shift+E)

4. Створюємо нескінченну анімацію руху в глиб коридору
4.1 Помістіть допоміжні лінії (Guides) так що вони перетиналися в центрі сходження перспективи коридору.Це стане в нагоді потім, коли треба буде всі верстви, що беруть участь в анімації, позиціонувати по цьому центру.

4.2 Виберіть шар, запустіть на виконання скрипт createAnimLayers.jsx. У параметрах введіть кількість кадрів анімації, кут повороту та відсоток масштабування.
- Від кількості кадрів залежить плавність анімації, що більше кадрів, то плавніше рух. Але пам'ятайте, що розмір GIF файлу може вийти занадто великим через велику кількість кадрів. У середньому треба розраховувати так, щоб на секунду анімації припадало близько 16 кадрів (у прикладі я зробив 16 кадрів, тобто 1 сек. анімації.)
- Кут повороту треба задавати той, що ми отримали на кроці 2.2 (див. вище "Розрахунок параметрів майбутньої анімації"), але тільки з негативним знаком.
- Для масштабування також беремо значення отримане на кроці 2.2, ділимо на 100 потім 100 ділимо на отримане значення. У прикладі: 100/(54/100)=185.2
4.3 В результаті роботи скрипта отримаємо кілька нових шарів. Кожен шар відповідає одному кадру анімації.

4.4 Увімкніть трохи терпіння. Тепер кожен знову отриманий шар треба позиціонувати так, щоб центр сходження перспективи коридору збігався з раніше виставленим перехрестям допоміжних ліній. Тобто. треба домогтися того що на всіх шарах центр перспективи збігався.

4.5 Відкрийте вікно анімації. Для кадру встановіть час 1/кількість кадрів у сік. У прикладі 1/16=0.06

4.6 Виберіть верхній шар. Створіть новий кадр анімації у вікні анімації, зробіть верхній шар невидимим. Так зробіть для всіх верств. У вас має вийти стільки кадрів скільки шарів, для кожного кадру видимим буде наступний шар за верхнім.
4.7Виберіть перший кадр у вікні анімації та обріжте (Crop) зображення по першій, найбільшій рамці.

5. Заключна обробка
5.1 Анімація готова, тепер використовуйте інструмент "Save for Web & Devices" (див. меню File)

5.2 Розмір одержуваного GIF файлу зменшіть у два рази (або у стільки, скільки ви збільшували на самому початку). Інші параметри – на ваш розсуд. Нагадаю тільки, що від розміру палітри залежить розмір файлу, який ви отримаєте, а також якість зображення.
Ось в результаті роботи я створив файл GIF, який ви бачили на початку статті. Відео трохи смикається на переході, це через те, що я трохи неакуратно центрував сходження перспективи коридору. Думаю, у вас ця операція вийде краще, ніж у мене.
Залишається побажати вам вдалих робіт та цікавих ідей!