美文网首页让前端飞
js中图片加水印的方法

js中图片加水印的方法

作者: 我是七月 | 来源:发表于2019-01-26 14:41 被阅读11次
奋斗的七月

因为项目中需要给图片加水印,但是原生实现其他需要安卓和ios两端进行开发,成本有些大,最终选择阿里云的图片加水印方法进行实现
阿里云的图片加水印很方法,里面可以加文本和图片,一张图可以加好几种不同的水印,用起来很方法,代码如下:

 //---图片加水印
    setImageUrl() {

      //--要加水印的文本--地址信息
      let detailMsg = "陕西省西安市灞桥区浐灞生态区世博大道与香湖湾五路碧桂园香湖湾1号";
      let arr = [];
      if (detailMsg) {
        if (detailMsg.length > 20) {
          detailMsg = detailMsg.replace(/(.{20})/g, "$1,");
          arr = detailMsg.split(",");
          arr.reverse();
        } else {
          arr = [detailMsg];
        }
      }
      //--要加水印的文本--需要在最上面加一个时间的水印文本
      arr.push("2019-01-25 12:23:23");

      let allMsg = "?x-oss-process=image/resize,w_800,h_800";
      let megFirst = "/watermark,type_d3F5LXplbmhlaQ,size_18,text_";
      let megLast = ",color_FFFFFF,shadow_50,t_100,g_se,x_10,y_";
      for (let index = 0; index < arr.length; index++) {
        const element = arr[index];
        let tempBase64 = getBase64(element);
        tempBase64 = tempBase64.replace(/[+]/g, "-");
        tempBase64 = tempBase64.replace(/\//g, "_");
        allMsg = allMsg + megFirst + tempBase64 + megLast + (10 + 20 * index);
      }
      console.log("allMsgallMsg===", allMsg);
      let imageUrl = "http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg";
      imageUrl = imageUrl + allMsg;
    },

//---转getBase64方法

import CryptoJS from 'crypto-js'
/**
 * getBase64
 */
export const getBase64 = (word) => {
    var str = CryptoJS.enc.Utf8.parse(word);
    var base64 = CryptoJS.enc.Base64.stringify(str);
    return base64
}
其中crypto-js的引用可参考前端crypto-js加密

最终转化的图片地址是:

http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_800,h_800/watermark,type_d3F5LXplbmhlaQ,size_13,text_5rmW5rm-5LqU6Lev56Kn5qGC5Zut6aaZ5rmW5rm-MeWPtw==,color_FFFFFF,shadow_50,t_100,g_se,x_10,y_10/watermark,type_d3F5LXplbmhlaQ,size_13,text_6ZmV6KW_55yB6KW_5a6J5biC54Ge5qGl5Yy65rWQ54Ge55Sf5oCB5Yy65LiW5Y2a5aSn6YGT5LiO6aaZ,color_FFFFFF,shadow_50,t_100,g_se,x_10,y_25/watermark,type_d3F5LXplbmhlaQ,size_13,text_MjAxOS0wMS0yMSAxODoyMzozMw==,color_FFFFFF,shadow_50,t_100,g_se,x_10,y_40

最终效果是:


水印图片

需要注意的是:

URL安全的Base64位编码
在图片处理服务里会有很多参数需要变成Base64位编码,参考RFC4648。注意这里的URL 安全Base64位编码只是用在水印操作某些特定参数(文字水印的文字内容,文字颜色,文字字体及图片水印的水印object)里,不要将其用来签名字符串(Signature)的内容。编码的格式是:

  • 先将内容编码成Base64结果;
  • 将结果中的加号”+”替换成中划线“-“;
  • 将结果中的斜杠”/”替换成下划线”_”;
  • 将结果中尾部的“=”号全部保留;

最大长度为64个字符(即支持汉字最多20个左右)

参考地址:阿里云-图片水印

相关文章

  • 图片添加二维码水印教程

    本博客介绍一下用jdk awt实现图片加文字水印和图片水印的方法 一、图片文字水印 原来图片 加上文字水印后图片 ...

  • 图片加水印

    加文字水印 图片水印 给字体加颜色

  • js中图片加水印的方法

    因为项目中需要给图片加水印,但是原生实现其他需要安卓和ios两端进行开发,成本有些大,最终选择阿里云的图片加水印方...

  • 图片加数字水印

    数字水印介绍 常见的图片水印多是在图片上附上文字、logo等信息,可以直观地看出来,除了这种水印外,好可以给图片加...

  • ios绘图实列

    1> 水印PPT简介 * 图片水印作用:防止他人盗取图片,加一些Logo,生成一张新的图片。 * 怎么生成新的图片...

  • FFmpeg滤镜(3)

    FFmpeg为视频加图片水印 1、movie滤镜 如图,通过movie读取图片文件作为水印,显示在x坐标30、y坐...

  • Android给图片加文字和图片水印

    先看效果图,左侧是原图,中间是添加文字水印,右侧是添加图片水印。 实现方法: 1、载入原始图片2、载入水印图片3、...

  • 如何去除视频中的水印,就看它了

    去除是图片上水印的方法有许多方法,比如用Photoshop、马赛克等,那么要怎么去除视频中的水印呢?那就带着疑问,...

  • Vue单页面实现水印功能

    在mian.js添加水印全局函数方法 //水印 Vue.prototype.$watermark =functi...

  • 推荐一波2018年一直舍不得删掉的APP推荐,超有趣+高逼格+很

    图片加文字秀 图片搭配文字的APP,提供图片加文字、文字生成图片、图片加水印、生成文字海报等。 迅捷CAD看图 免...

网友评论

    本文标题:js中图片加水印的方法

    本文链接:https://www.haomeiwen.com/subject/fojijqtx.html