如何在 angular 5 中截取屏幕截图或屏幕视频
how to take screenshot or screen video in angular 5
我正在使用 angular 5 示例项目,想要使用 angular5 组件结构构建屏幕截图或捕获屏幕视频的功能。
对于屏幕截图,这个库应该可以解决问题。
npm install angular-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!'
};
}
})()
在 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;
}
Precautions
如果您遇到这样的错误,因为您不是 运行 具有安全 link
的应用程序
然后这样做
我正在使用 angular 5 示例项目,想要使用 angular5 组件结构构建屏幕截图或捕获屏幕视频的功能。
对于屏幕截图,这个库应该可以解决问题。
npm install angular-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!'
};
}
})()
在 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;
}
Precautions
如果您遇到这样的错误,因为您不是 运行 具有安全 link
的应用程序然后这样做