При съемке с веб-камеры мой код иногда растягивается или обрезается

Я сделал веб-приложение, которое позволит мне делать снимки с веб-камеры.

Как должно работать приложение:

✓ Запустите веб-приложение из браузера Chrome на мобильном устройстве.

✓ Предоставить разрешения для веб-приложения [для доступа к камере]. Это должно предоставить мне доступ к передней и задней камере, как я хочу.

✓ Камера включается и отображается внутри

<video id = 'camera' style="margin: 0 auto; width:320px;"></video>

✓ Теперь я могу делать снимки с веб-камеры, нажав кнопку. Всякий раз, когда я делаю снимок, я рисую его на скрытом холсте.

<div><canvas id = 'c'class="hidden"></canvas></div>

Используя этот код:

grabFrame(vm) {
var imageCapture = new ImageCapture(window.stream.getVideoTracks()[0]);
var canvas = document.getElementById("c");
var orientation = window.screen.orientation.type;
if (orientation === "portrait-secondary" || orientation === "portrait-primary") {
  canvas.height = 640;
  canvas.width = 480;
}
else {
  canvas.height = 480;
  canvas.width = 640;
}
imageCapture.grabFrame(vm).then(function (imageBitmap) {
  // if this is a device running on windows touch device
  if ((navigator.userAgent.toLowerCase().indexOf("windows") > -1) &&
      (navigator.userAgent.toLowerCase().indexOf("touch") > -1)) {
    canvas.getContext('2d').drawImage(imageBitmap, 0, 0);
  }
  else {
    canvas.getContext('2d').drawImage(imageBitmap, 0, 0, canvas.width, canvas.height, 0, 0, canvas.width, canvas.height);
  }
  canvas.classList.remove('hidden');
  var img = canvas.toDataURL("image/png");
  vm.get('photos').pushObject(img);
  canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height);
});}

Я рисую Captured Image на холсте, а затем я добавляю его в массив картинок, которые мне нужны для дальнейшего использования.

Во-первых, я пытался использовать takePhoto() функция отсюда, но она просто не работает вообще.

Мой код работает, но не полностью, когда дело доходит до масштабирования изображения и ориентации.

✘ Если я использую Window Tablet, чтобы сделать снимок, снимок, сделанный в портретном режиме, выглядит хорошо, но горизонтальный снимается.

Я думаю, что что-то крутит, но я просто не понимаю, почему все работает нормально на Android, а не на планшете с Windows.

На обоих устройствах я использовал браузер Chrome с одинаковой версией 58++

Спасибо!

Адриан

0 ответов

Другие вопросы по тегам