【问题标题】:how to take screenshot or screen video in angular 5如何以角度 5 截取屏幕截图或屏幕视频
【发布时间】:2018-09-28 11:19:24
【问题描述】:

我正在使用 angular 5 示例项目,想使用 angular5 组件结构构建屏幕截图或捕获屏幕视频的功能。

【问题讨论】:

    标签: angular screenshot angular5 angularjs-components


    【解决方案1】:

    在 Angular 5+ 中通过网络摄像头捕获用户图像

    创建一个组件,即

    ng generate component capture
    

    并粘贴下面的代码以通过网络摄像头捕获图像

    capture.component.html

    <div id="app">
      <div><video #video id="video" width="640" height="480" autoplay></video></div>
      <div><button id="snap" (click)="capture()">Snap Photo</button></div>
      <canvas #canvas id="canvas" width="640" height="480"></canvas>
      <ul>
          <li *ngFor="let capture of captures">
              <img [src]="capture" style="widows: 200px;height:auto" />
          </li>
      </ul>
    </div>
    

    capure.component.ts

    import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
    
    @Component({
      selector: 'app-capture',
      templateUrl: './capture.component.html',
      styleUrls: ['./capture.component.scss']
    })
    export class CaptureComponent implements OnInit {
    
      captures: Array<any>;
    
      constructor() {
        this.captures = [];
      }
    
      ngOnInit() { }
    
      async ngAfterViewInit() {
        if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
          let stream = await navigator.mediaDevices.getUserMedia({ video: true })
          this.video.srcObject = stream;
        }
      }
    
      capture() {
        var context = this.canvas.getContext("2d").drawImage(this.video, 0, 0, 640, 480);
        this.captures.push(this.canvas.toDataURL("image/png"));
      }
    
      @ViewChild("video") videoRef: ElementRef;
      get video(): HTMLVideoElement {
        return this.videoRef.nativeElement
      }
    
      @ViewChild("canvas") canvasRef: ElementRef;
      get canvas(): HTMLCanvasElement {
        return this.canvasRef.nativeElement
      }
    }
    

    capure.component.css

    body {
        background-color: #F0F0F0;
    }
    #app {
        text-align: center;
        color: #2c3e50;
        margin-top: 60px;
    }
    #video {
        background-color: #000000;
    }
    #canvas {
        display: none;
    }
    li {
        display: inline;
        padding: 5px;
    }
    

    注意事项

    如果您因为没有使用安全链接运行应用程序而遇到此类错误

    然后这样做

    更多详情https://x-team.com/blog/webcam-image-capture-angular/

    【讨论】:

      【解决方案2】:

      对于屏幕截图,这个库应该可以解决问题。

      npm install angular-screenshot
      

      基本用法示例: 使用 screenshot 作为元素或属性,然后使用默认模板并覆盖子元素默认

          <button class="btn btn-fab" ng-class="{true: 'btn-danger', false: 'btn-default'}
      [appCtrl.isBasicOpen]" ng-click="appCtrl.isBasicOpen = !appCtrl.isBasicOpen">
          <i ng-if="!appCtrl.isBasicOpen" class="material-icons">crop</i>
          <i ng-if="appCtrl.isBasicOpen" class="material-icons">close</i>
      </button>
      <!--screenshot-->
      <screenshot is-open="appCtrl.isBasicOpen">
          <div class="panel-body">
              ...
          </div>
      </screenshot>
      

      使用target参数在元素上设置截图部分

      <div id="target1" class="panel panel-info">
          ...
          <div class="panel-body">
              <screenshot target="{{::'#target1'}}" is-open="appCtrl.target1Open" toolbox-options="appCtrl.target1Options"></screenshot>
                  ...
          </div>
      </div>
      
      'use strict';
      (function () {
      angular.module('app', ['angular-screenshot'])
      .controller('AppController', ['$scope', appController]);
          function appController($scope) {
              var self = this;
              self.target1Options = {
                  filename: 'target1.png',
                  downloadText: 'Download me',
                  cancelText: 'Close it!'
              };
          }
      })()
      

      【讨论】:

      • 这似乎适用于 AngularJs 而不是 Angular 5
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      相关资源
      最近更新 更多