pa5htet
@pa5htet

Как скалировать video внутри тега?

На сайте в мобильной версии встроена возможность сделать фотографию. Реализовано просто, классически:

video = document.getElementById('video');
canvas = document.getElementById('canvas');
photo = document.getElementById('photo');

camera = navigator.mediaDevices.getUserMedia(...
.then((stream) => {
video.srcObject = stream;
video.play();
}

При скалировании меняется размер всего сайта, а хотелось бы менять область сьемки (и фотографирования конечно).
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
@romant094
Frontend-developer
Для того чтобы изменить размер области сьемки (а также отображения) в мобильной версии сайта, необходимо произвести изменения размеров элементов , и . Вам придется задать им новые размеры с использованием JavaScript в зависимости от разрешения экрана устройства. Вот пример того, как вы можете это сделать:
const video = document.getElementById('video');
const canvas = document.getElementById('canvas');
const photo = document.getElementById('photo');

function adjustCameraSize() {
  const screenWidth = window.innerWidth;
  const screenHeight = window.innerHeight;

  // Задайте новые размеры элементам в зависимости от размеров экрана
  video.width = screenWidth; // Ширина видео
  video.height = screenHeight; // Высота видео

  canvas.width = screenWidth; // Ширина canvas
  canvas.height = screenHeight; // Высота canvas

  photo.style.width = `${screenWidth}px`; // Ширина блока с фотографией
  photo.style.height = `${screenHeight}px`; // Высота блока с фотографией
}

// Вызывайте функцию при загрузке страницы и при изменении размера окна
window.addEventListener('load', adjustCameraSize);
window.addEventListener('resize', adjustCameraSize);

// Затем настройте вашу камеру с учетом новых размеров
navigator.mediaDevices.getUserMedia({ video: true })
  .then((stream) => {
    video.srcObject = stream;
    video.play();
    adjustCameraSize(); // Вызовите функцию снова после получения потока
  });


Этот код будет изменять размеры элементов , и в зависимости от размеров экрана устройства, и камера будет адаптироваться к новым размерам. Помимо этого, функция adjustCameraSize() вызывается при загрузке страницы и при изменении размера окна, чтобы учесть все возможные изменения размеров окна.

Учтите, что при изменении размеров элементов, вы также, возможно, захотите обновить свой CSS, чтобы элементы отображались корректно в новых размерах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы