ホームページ  >  記事  >  ウェブフロントエンド  >  HTML5 WebウォーターマークSDKの実装方法

HTML5 WebウォーターマークSDKの実装方法

不言
不言転載
2019-04-03 11:10:123892ブラウズ

この記事の内容は、HTML5 Web ウォーターマーク SDK の実装コード例に関するものであり、一定の参考価値がありますので、困っている方は参考にしていただければ幸いです。

Web サイトを閲覧するとき、スクリーンショットや画面録画を撮って機密情報を公開した後にユーザーがソースを追跡できないようにするために、Web ページの透かしが必要になることがよくあります。たとえば、一般的に使用されている DingTalk ソフトウェアでは、チャットの背景にあなたの名前が表示されます。では、Web 透かし効果を実現するにはどうすればよいでしょうか?

Web ページのウォーターマークSDK、実装のアイデア

1. 名前、名前などの最新のユーザー情報を取得できます。ニックネーム、ID など、画像のウォーターマーク #2 を生成します。ウィンドウ全体をカバーし、他の要素に影響を与えないキャンバスを生成します
3。フォントの間隔とサイズ、色
4。Jqueryに依存しません
5。ユーザーがこのCanvasを手動で削除できないようにする必要があります

分析を実装します

初期パラメータ

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

Generate Canvas

IDに基づいてCanvasを生成します。キャンバスのサイズはwindow.screenサイズです。元の古いバージョンがある場合は、キャンバス、クリアして再生成します。

キャンバスはビジュアル ウィンドウ内で固定的に配置され、z インデックスは -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 + &#39; Arial&#39;;
         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(&#39;gulp&#39;),
      uglify = require("gulp-uglify"),
      babel = require("gulp-babel");
  gulp.task(&#39;minify&#39;, function () {
      return gulp.src(&#39;./src/index.js&#39;) // 要压缩的js文件
      .pipe(babel())
      .pipe(uglify())
      .pipe(gulp.dest(&#39;./dist&#39;)); //压缩后的路径
  });

[関連推奨:

HTML5 ビデオ チュートリアル]

以上がHTML5 WebウォーターマークSDKの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。