Все работает, но есть один неприятный нюанс: при скриншоте канваса, если к примеру элемент передвигается (а скриншот делается при каждом изменении канваса), то он подлагивает.
sorry_i_noob, расширение - это минимальная защита для прямого доступа через веб-сервер к файлу (т.е. как в Вашем примере).
Для PHP - есть include_*(), system(), и т.д.
Для системы (OS) - вообще не важно какое расширение, чтобы сделать запуск файла и т.д.
Поэтому, нужно убедиться, что загружен был именно ожидаемый и корректный формат файла, проверив его "тело".
thehighhomie, зачем каждый кадр то рендирить на миниатюру?!)
1. рендерите только изменения
2. пока идёт ресайз или перетаскивание - проверку изменений вообще не производите.
3. надеюсь, это Вы видели: interactjs.io
Илья Герасимов, так написано же всё на гитхабе, включая DEMO-код.
Создавать загружаемую по частям страницу/шаблон: загрузка блоков по событиям. Аналог include() в PHP, только это - для front'а.
thehighhomie, вопрос был не про сохранение, а про рендеринг во время показа. Не могу понять: зачем каждый кадр то растрить?
Можно сказать, например:
"надпись появляется на позиции X,Y на 00:02сек, шрифт такой, размер, такой, исчезает через 00:10сек" (всё это хранится в JSON для каждого объекта сцены).
Т.е. сделать как проигрыватель объектов по тайм-шкале, а части тайм-шкалы - это и будут слайды презентации.
thehighhomie, В devtools есть много инструментов, включая "Память" и "Canvas". И, разумеется, память будет потребляться больше, т.к. всё зависит от длины ролика.
Если вы создадите систему динамической обработки очереди "шотов" несколькими воркерами, то размер памяти плавно переползёт в увеличенную загрузку CPU.
Вопросы:
1. а почему именно рендер именно на клиенте?!
2. почему не работать именно с json-матрицей отдельных объектов для их позиционирования и перемещения с помощью JS и без рендера в "шоты"?
thehighhomie, главное: анимашка 60fps, запись видео 5-10fps.
Если нужно именно 60fps - то лучше вначале набрать "сырой" массив объектов нужного региона без конвертации, и уже потом - обрабатывать.
ilovemaryjane, ну так об этом я и говорю. О компоненте! А не обо всём коде конкретного проекта.
Ну или просто:
1. При открытии оверлея - ставим его ниже хидера (top, высотой с хидер)
2. Скрываем ненужные элементы на хидере.
3. По закрытию оверлея - вновь показываем скрытые.
ilovemaryjane, Раз "просто фиксед - всё ок", то может проще подумать: в каких случаях обязателен трансформ и сделать его не постоянным, а только в каких-то моментах?
Может это поможет или избавиться от него, или понять, где накладывать/снимать этот трансформ только через JS только тогда, когда это нужно?
ilovemaryjane, ну...... тут не получится и рыбку...., и.... не подавиться)
Обычно - все оверлеи не просят ничего.
У тебя - запрос: "оставьте мой хидер на месте при любом full-page оверлее!"
Суть понятна?)