>  기사  >  웹 프론트엔드  >  웹 워터마크 SDK 구현 방법 소개(코드 예시)

웹 워터마크 SDK 구현 방법 소개(코드 예시)

不言
不言앞으로
2019-02-19 15:55:282115검색

이 글은 웹 워터마크 SDK의 구현 방법(코드 예시)을 소개합니다. 참고할 만한 가치가 있으니 도움이 필요한 분들에게 도움이 되길 바랍니다.

웹사이트를 탐색할 때 사용자가 민감한 정보를 노출하고 사용자의 소스를 추적하기 위해 스크린샷이나 화면 녹화를 찍는 것을 방지하기 위해 웹페이지 워터마크가 필요한 경우가 많습니다. 예를 들어, 일반적으로 사용되는 DingTalk 소프트웨어에서는 귀하의 이름이 채팅 배경에 표시됩니다. 그렇다면 웹 워터마크 효과를 얻으려면 어떻게 해야 할까요?

웹페이지 워터마크 SDK, 구현 아이디어

1. 이름, 닉네임, ID 등 현재 획득한 사용자 정보를 기반으로 워터마크를 생성할 수 있습니다.
2. 다른 요소에 영향을 줍니다
3. 글꼴 간격, 크기, 색상을 수정할 수 있습니다
4. Jquery에 의존하지 않습니다
5. 사용자가 이 캔버스를 수동으로 삭제하지 못하도록 해야 합니다

분석 구현

초기 매개변수

    size: 字体大小
    color: 字体颜色
    id: canvasId
    text: 文本内容
    density: 间距
    clarity: 清晰度
    supportTip: Canvas不支持的文字提示

생성 Canvas

id를 기준으로 캔버스를 생성합니다. 캔버스 크기는 window.screen 크기입니다. 오래된 캔버스가 있으면 지우고 다시 생성하세요.

캔버스는 시각적 창에 고정되어 있으며 z-index는 -1입니다.

    let body = document.getElementsByTagName('body');
    let canvas = document.createElement('canvas');
    canvas.style.cssText= 'position: fixed;width: 100%;height: 100%;left:0;top:0;z-index: -1;';
    body[0].appendChild(canvas);

지문 생성 알고리즘

      let canvas = document.getElementById(this.params.id);
      let cxt = canvas.getContext('2d');
      let times = window.screen.width * this.params.clarity / this.params.density;//横向文字填充次数
      let heightTimes = window.screen.height * this.params.clarity * 1.5/ this.params.density; //纵向文字填充次数
      cxt.rotate(-15*Math.PI/180); //倾斜画布
   
      for(let i = 0; i < times; i++) {
        for(let j = 0; j < heightTimes; j++) {
          cxt.fillStyle = this.params.color;
          cxt.font = this.params.size + ' Arial';
          cxt.fillText(this.params.text, this.params.density*i, j*this.params.density);
        }
      }

사용자 삭제 방지

타이머를 사용하여 정기적으로 지문 존재 여부를 확인하세요

    let self = this;
    window.setInterval(function(){
    if (!document.getElementById(self.params.id)) {
    self._init();
    }
    }, 1000);

프로젝트 편집

glup 컴파일 사용

    var gulp = require('gulp'),
        uglify = require("gulp-uglify"),
        babel = require("gulp-babel");
    gulp.task('minify', function () {
        return gulp.src('./src/index.js') // 要压缩的js文件
        .pipe(babel())
        .pipe(uglify())
        .pipe(gulp.dest('./dist')); //压缩后的路径
    });

위 내용은 웹 워터마크 SDK 구현 방법 소개(코드 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제