zoukankan      html  css  js  c++  java
  • 前端技术实现js图片水印

    attendanceClick(userID,headImg,userName,company,scoreNmu) {
    let base64Image = 'assets/imagesaring.png';
    let base64Image1 = 'assets/imagesaring1.png';
    let base64Image2 = 'assets/imagesaring2.png';
    let base64Image3 = 'assets/imagesaring3.png';
    let base64Image4 = 'assets/imagesaring4.png';
    let base64Image5 = 'assets/imagesaring5.png';
    //加水印
    var canvas = document.createElement('canvas');
    var cxt = canvas.getContext('2d');
    cxt.fillStyle = 'green';
    cxt.fillRect(10, 10, 100, 100);
    var img = new Image();
    if (scoreNmu>=60&&scoreNmu<70) {
      img.src = base64Image1;
    } else if (scoreNmu>=70&&scoreNmu<80){
      img.src = base64Image2;
    } else if (scoreNmu>=80&&scoreNmu<90){
      img.src = base64Image3;
    } else if (scoreNmu>=90&&scoreNmu<95){
      img.src = base64Image4;
    } else {
      img.src = base64Image5;
    }
    if ( headImg == null || headImg == '' ) {
      headImg = 'assets/images/0.png';
    }
    img.onload = () => {
      var date: string = new Date().toLocaleDateString();
      var datetime: string = date;//添加日期
      canvas.height = img.height;
      canvas.width = img.width;
      cxt.drawImage(img,0,0,img.width,img.height,0,0,img.width,img.height);
      cxt.save();
      cxt.font = 20 + "px Arial";
      cxt.textBaseline = 'middle';//更改字号后,必须重置对齐方式,否则居中麻烦。设置文本的垂直对齐方式
      cxt.textAlign = 'center';
      let ftop = 715;
      let fleft = 630;
      cxt.fillStyle="#000";
      cxt.fillText(datetime,fleft,ftop);//文本元素在画布居中方式
      try {
        let tempImage = new Image();
        tempImage.onload = () => {
          let tempImageX = 180;
          let tempImageY = 310;
          let tempImageW = 140;
          let tempImageH = 140;
          cxt.drawImage(tempImage,tempImageX,tempImageY,tempImageW,tempImageH);
          // 用户名
           let tempTextData = userName;
          cxt.save();
          cxt.font = 40 + "px Arial";
          cxt.textBaseline = 'middle';
          cxt.textAlign = 'left';
          let tempNameX = 360;
          let tempNameY = 350;
          cxt.fillStyle="#000";
          cxt.fillText(tempTextData,tempNameX,tempNameY);
    
        // 公司名字
          let tempCompanyData = company;
          if (this.globalFunction.isNull(tempCompanyData)) {
            tempCompanyData = '平安人寿';
          }
          cxt.save();
          cxt.font = 40 + "px Arial";
          cxt.textBaseline = 'middle';
          cxt.textAlign = 'left';
          let tempCompanyX = 360;
          let tempCompanyY = 420;
          cxt.fillText(tempCompanyData,tempCompanyX,tempCompanyY);
          this.canvasImage = canvas.toDataURL("image/jpg");
          let tempSrc = this.canvasImage.substring(22);
            this.interfaceService.doUpdateRankingPath(userID,tempSrc);
          }
          tempImage.crossOrigin="anonymous";
          tempImage.src = headImg;
        } catch (error) {
          console.log('出现错误'+error);
        } 
      }
    }
  • 相关阅读:
    dubbo源码阅读-服务订阅(八)之本地订阅(injvm)
    dubbo源码阅读-服务订阅(八)之主流程
    dubbo源码阅读-服务暴露(七)之远程暴露(dubbo)
    dubbo源码阅读-配置(二)之API配置
    dubbo源码阅读-容器启动(六)
    LIRe 源代码分析 6:检索(ImageSearcher)[以颜色布局为例]
    LIRe 源代码分析 5:提取特征向量[以颜色布局为例]
    LIRe 源代码分析 4:建立索引(DocumentBuilder)[以颜色布局为例]
    智能电视大战背后的秘密
    二线视频网站突围战
  • 原文地址:https://www.cnblogs.com/ChineseLiao/p/7652086.html
Copyright © 2011-2022 走看看